ts 指令
// 编译该目录下的全部 ts 文件
tsc
// 编译该目录下的 deom.ts 文件
tsc demo.ts
// 监听 deom.ts 文件,并自动编译该文件
tsc demo.ts -w
基本用法
// a 必须是数值类型
let a: number = 1;
// b 必须是字符串类型
let b: string = '1';
// 联合类型,c 可同时支持数值或字符串类型
let c: number | string = 1;
c = '99';
// d 必须是布尔类型
let d: boolean = true;
// 字面量,类似常量,e 的值为 10,值不能修改
let e: 10;
// 不做任何类型限制,如果不写 any,程序默认设置为 any,未知类型时不推荐使用
let f: any = 10;
f = '99';
f = true;
// unknown 未知类型,赋值给其他变量时会报错,未知类型时推荐使用
let g: unknown;
g = 2;
g = '99';
let g1: number = 1;
// 直接赋值报错,不能将类型“unknown”分配给类型“number”
// g1 = g;
// 判断类型,满足条件再赋值
if(typeof g === 'number'){
g1 = g;
};
// 类型断言,可以用来告诉解析器变量的实际类型,以下两种使用方法
g1 = g as number;
g1 = <number>g;
// 空值,函数没有返回值,可返回 null 、undefined
function sum (): void { };
// 没有任何返回值,包括 null 、undefined,应用场景(代码抛出错误的时候)
function sum (): never {
throw new Error('报错了');
};
object
// 指定对象包含属性,不能添加 name、age 以外的任何属性
let a: {name: string, age: number};
a = {name: '张三', age: 18};
// age? 表示该属性是非必须
let b: {name: string, age?: number};
b = {name: '张三'};
// [propName: string]: any 表示支持 propName 属性名(age、sex)为字符串的任意类型的属性(18、'男')
let c: {name: string, [propName: string]: any};
c = {name: '张三', age: 18, sex: '男'};
函数
// 参数必须是数值,a 和 b 的默认值为 2,返回值必须是字符串
function sum (a: number = 2, b: number = 2): string {
return String(a + b);
};
数组
let a: string[] = ['1', '2', '3'];
let b: Array<string | number> = ['1', 2, '3'];
元组 tuple
(固定长度的数组)
// 数组中只能存两个指定类型的值
let a: [string, number] = ['1', 2];
枚举 enum
enum Gender {
Male = 0,
Female = 1
};
let a: {name: string, sex: Gender};
a = {name: '张三', sex: Gender.Male};
或 |
与 &
// 满足其中一种类型
let a: string | number = 1;
// 同时满足条件
let b: {name: string} & {age: number} = {name: '张三', age: 18};
类型别名
// 限制必须是 1-5 中的值
type myNumber = 1 | 2 | 3 | 4 | 5;
let a: myNumber = 5;
网友评论