引言
很多人一看到typeof,就会联想到js中的类型判断,但是在ts中也有typeof的使用,但是它可不是用来判断类型的哦,他的作用是可以在类型上下文中进行类型查询,并且只能对变量的类型或者属性查询
keyof 用于读取type或者interface的key值
读取interface的key
| interface testa { |
| name:"何以", |
| sex:'皆有' |
| } |
| |
| type testaType = keyof testa |
| |
| let namea:testaType="name" |
复制
读取interface里的key 组成 | 选项
读取type的key
| type testb= { |
| name:string, |
| sex:number |
| } |
| |
| type testbType = keyof testb |
| |
| let testb:testbType="name" |
复制
读取type 里的key 组成 | 选项
typeof 用于变量(基本数据类型)
| let nameTmp = "sjf" |
| type nameTmpType = typeof nameTmp |
| let str1:nameTmpType = '666' |
复制
type nameTmpType = typeof nameTmp 中的typeof 会读取 nameTmp变量的数据类型
typeof 用于对象
| let info ={ |
| name:'张三', |
| age:18, |
| isMan:true |
| } |
| |
| type infoType = typeof info |
| |
| |
| type infoType ={ |
| name:string, |
| age:number, |
| isMan:boolean |
| } |
| |
| let user1:infoType={ |
| name:'232323', |
| age:12121, |
| isMan:false |
| } |
复制
typeof 用于对象的属性
| let testInfo1={ |
| name:'何以解忧,唯有杜康', |
| count:1, |
| sub:{ |
| name:'11312', |
| isChange:true, |
| subCount:0 |
| } |
| } |
| type testInfo1Interface = typeof testInfo1.sub |
| type testInfo1Type = keyof testInfo1Interface |
| let name4:testInfo1Type = "name" |
| let isChange:testInfo1Type="isChange" |
复制
typeof 用于读取函数的参数和返回值类型
| function add(a:number,b:number):number{ |
| return a+b |
| } |
| |
| type AddType = typeof add |
| type AddReturnType = ReturnType<AddType> |
| type AddParamsType = Parameters<AddType> |
复制