注意: 使用小写的数据类型(ts官方推荐),定义类型的时候: 后最好加个空格(不加也能执行但不规范)
js中基本类型数据的类型声明
- 使用
变量: 数据类型
声明数据类型,如let str: string
,可以先声明后赋值和使用
ts
let str: string = '321'
let number: number = 321
let flag: booleanv
flag = true
静态类型检查注意事项
- 无法将
【不同类型】
的变量或常量赋值给对方:str = 321不能将类型"number"分配给类型"string"
- 无法和函数一样
【执行方法】
:str()此表达式不可调用
js中引用数据类型的类型声明
函数
- 在
(x: number)
(内)
对接受的参数 进行类型声明,在(): string
()后
对返回值进行类型声明 fucntion count(x: number, y: number): number{}
、let fun1 = (x: number, y: number): number => {}
函数可以对接受的参数
和返回值
进行类型声明
ts
function count(x: number, y: number): string{
return x + '' + y;
}
let fun1 = (x: number): number => {
return 123 + x;
}
静态类型检查注意事项
- 函数调用时候的
【实参类型】
要和定义时候的类型一样 - 函数调用时候的
【实参个数】
要和定义的时候数量一样,注意: 多了少了都不行 - 函数体内return的返回值要和
【返回值类型】
定义的返回值类型一样
ts
// 【实参类型】不对
let fun1 = (x: number, y: number): number => {return x + y}
fun1(123,'321') // 报错:类型"string"的参数不能赋给类型"number"的参数
// 【实参个数】不对(多了少了都不行)
let fun2 = (x: number, y: number, z: number) => {return x + y + z}
fun2(123,321) // 报错:应有 3 个参数,但获得 2 个,未提供 "z" 的自变量
fun2(123,321,1234,4321) // 报错:应有 3 个参数,但获得 4 个。
// 【返回值类型】不对
function count(x: number, y: number): number{
return x + y + ''; // 报错:不能将类型"string"分配给类型"number"
}
字面量类型声明和类型推断
后续会有文章单独详解字面量类型
let str: 'hello'
:
后面直接给变量一个写死的值,可以是任何数据类型
静态类型检查注意事项
- 字面量类型声明的变量无法赋值除了
【定义值】
之外的任何值:str = '321'不能将类型""321""分配给类型""hellow""
类型推断
let t: 99
使用字面量声明时ts会自动推断对应的数据类型,此处为number
。
注意:any
类型的变量可以赋值给任意类型
any
类型的变量可以赋值给任意类型,不管any类型的变量后来被赋值成任意数据类型都不会报错
ts
let str: string
let num: number
let hello: 'hello'
let x: any
x = true
str = x
num = x
hello = x