类型推论
如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。
下边的变量在定义时没有声明类型,所以typescript会推断出大概是sting类型,在后边getting又在赋值时改变了类型,所以编译时会报错
let getting = 'hello,world';
getting = 9999;
Type '9999' is not assignable to type 'string'.
如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查:
let myNumber;
myNumber = 'seven';
myNumber = 7; //ok
联合类型
表示多种类型,取值时可以为多种类型中的一种。
下面的变量,在赋值时可以是定义类型中的任意一种.
let number: string | number | number[];
number = 'seven';
number = 7;
number = [0,1,2,3];
访问联合类型的属性或方法
只能访问联合类型中的共有属性或方法,否则将会报错
//正确,因为num都有toString方法
function test(num: string | number) {
return obj .toString()
}
let num = 'server';
console.log(test(num))
//编译错误,number类型的num 不存在length属性
function test(num: string | number) {
return num.length;
}
let num = 'server';
console.log(test(num))
参考文章
https://www.tslang.cn/index.html
https://ts.xcatliu.com/basics/type-inference.html
https://ts.xcatliu.com/basics/union-types.html
网友评论