js下,typeof 返回操作值的类型 值为"字符串"
//null 为空对象 ,所以属于object类型
typeof undefined; // "undefined"
typeof true; // "boolean"
typeof 1337; // "number"
typeof "foo"; // "string"
typeof {}; // "object"
typeof parseInt; // "function"
typeof Symbol(); // "symbol"
typeof 127n // "bigint"
ts下 typeof运算符主要参与类型运算,它返回操作值的ts类型,而不是字符串
类型运算的情况: 1变量宣告类型时,2定义类型时
let data = {
code:200,
detail:{
list:[{title:'xxx'}],
}
}
// 变量宣告类型时
let data2:typeof data = {
code:200,
detail:{
list:[{title:'xxx'}],
}
}
// 定义类型时,定义的data类型采取data推断出的类型
type data = typeof data
let data3:data = {
code:200,
detail:{
list:[{title:'xxx'}],
}
}
同一段代码可能存在两种typeof运算符,一种是类型运算,一种是值运算.
let a = 1;
let b:typeof a;
if (typeof a === 'number') {
b = a;
}
由于编译时不会进行 JavaScript 的值运算,所以TypeScript 规定,typeof 的参数只能是标识符 不能是需要运算的表达式。