共计 字 • 阅读约
min
任意类型
任意类型(any)用来表示允许赋值为任意数据类型
一个普通类型,在赋值过程中改变类型是不被允许的
let name:string = '张三'
name = 123
// ERROE:
// Type 'string' is not assignable to type 'number'.
如果使用 any 类型,这个操作就是被允许的
let name:any = '张三'
name = 123
未申明类型的变量,默认也会被识别为任意类型
let name;
name = '张三'
name = 'lisi'
等价于
let name:any;
name = '张三'
name = 'lisi'
any 数据类型访问任意属性都是被允许的
any 数据类型是有弊端的,首先不能快速知道类型,其次又回到了最初的起点(Javascript),everything is any
类型推论
如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。
例如下面这个例子:虽然没有指定类型,但是编译也会报错,
let name = '张三';
// 等同于 let name:string = '张三'
name = 7;
// ERROR
// Type 'string' is not assignable to type 'number'.
如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any
类型而完全不被类型检查:
let name;
name = '张三'
name = 123
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
let name: string | number // 就表示name既可以是字符串,也可以是数字
name = '张三'
name = 123
访问联合类型的属性或方法,只能访问此联合类型的 所有类型里共有的属性或方法:
let name: string | number
// 非共有属性
name.length
// length 属性只有string类型有,number没有
// ERROR
// Property 'length' does not exist on type 'number'.
// 共有属性
name.toString()
文章更新于: 2021-4-16 0:17:8