类型别名的用法
type nameType = string | string[]
let zhangName :nameType = "张三"
let zhangName1 :nameType = ["张三"]
可以用来定义函数
type fn = (name: string, age: number) => string
let fn1: fn = function (name: string, age: number): string {
return "xxx"
}
let fn2: fn = (name: string, age: number): string => "xxx"
也可以用来定义对象
type infoType = {
readonly name: string,
age?: number
}
let zhangsan:infoType = {
name: "张三",
}
和interface的区别
- interface可以继承 type 只能通过 & 交叉类型合并
interface I1{
name: string
}
interface I2 extends I1{
age: string
}
type T1 = {
name: string
}
type T2 = {
age: number
}
let t:T1&T2 = {
name:"张三",
age: 12
}
- type 可以定义 联合类型 和 可以使用一些操作符 interface不行
type nameType = string|string[]
- interface 遇到重名的会合并 type 不行
interface A1 {
name: string
}
// 遇到相同的会合并
interface A1{
age: number
}
let a1:A1={
name:"A1",
age: 13
}
type A1 = {
name: string
}
// 会直接报错
type A1 ={
}