美文网首页
typescript中的类型推论和联合类型

typescript中的类型推论和联合类型

作者: mills_han | 来源:发表于2018-06-05 15:14 被阅读0次

类型推论

如果没有明确的指定类型,那么 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

相关文章

网友评论

      本文标题:typescript中的类型推论和联合类型

      本文链接:https://www.haomeiwen.com/subject/beopsftx.html