// 声明一个变量a,同时指定它的类型为number,
let a: number;
a = 1;
a = 2;
a = '你好'; // 此行代码会报错,因为变量a的类型是number,不能赋值字符串
// 声明一个变量b,同时指定它的类型为stringr,
let b: string;
b = 'hello';
// b = 123;//报错
// 声明一个变量c,同时指定它的类型为boolean
// let c: boolean = false;
在函数中,声明值为number,返回值也是number
function sum(a: number, b: number): number{
return a + b;
}
let result = sum(123, 456);
联合类型,类型断言,在属性名后边加上?,表示属性是可选的
还有联合类型,用 " | "来连接,表示类型或
let c: boolean | string;
c = true;
c = 'hello';
// 类型断言,可以用来告诉解析器变量的实际类型,结合unknown使用
s = e as string;
s = <string>e;
let b: {name: string, age?: number};
b = {name: '孙悟空', age: 18};
类型any,unknown,void,never
// any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测
// 使用TS时,不建议使用any类型
// unknown 表示未知类型的值
// void 用来表示空,以函数为例,就表示没有返回值的函数
function fn(): void{
}
// never 表示永远不会返回结果
function fn2(): never{
throw new Error('报错了!');
}
object,Array
// [propName: string]: any 表示任意类型的属性
let c: {name: string, [propName: string]: any};
c = {name: '猪八戒', age: 18, gender: '男'};
// string[] 表示字符串数组
let e: string[];
e = ['a', 'b', 'c'];
// number[] 表示数值数组
let f: number[];
let g: Array<number>;
g = [1, 2, 3];
元组,枚举
* 语法:[类型, 类型, 类型]
* */
let h: [string, number];
h = ['hello', 123];
enum Gender{
Male,
Female
}
let i: {name: string, gender: Gender};
i = {
name: '孙悟空',
gender: Gender.Male // 'male'
}