typescript(静态编程语言)
-
ts全局安装
npm i -g typescript 或者 yarn global add typescript- 使用tsc -v查看版本
-
ts运行
- 运行tsc生成js文件
tsc filename.ts node filename.js -
ts中的类型注解是一种轻量级的为函数或变量添加约束的方式
function greeter(person: string): string { return "Hello" + person; } let user = [0, 1, 2]; console.log(greeter(user)); //ERROR:error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'. //error code:5 console.log(greeter(user)); -
ts配置
-
ts使用tsconfig.json文件管理工程配置
-
include读取所有可识别src目录下的文件 -
allowJS接受JavaScript作为输入 -
outDir生成的所有文件放在built目录下 -
target将js代码降级到低版本(ES5)以下 -
noImplicitReturns会防止你忘记在函数末尾返回值 -
noFallthroughCasesInSwitch会防止在switch代码块里的两个case之间忘记添加break语句{ "compilerOptions": { "outDir": "./built", "allowJs": true, "target": "ES5" }, "include": [ "./src/**/*" ] }
-
-
ts模块导出
function foo(){ //... } export=foo; -
ts基础类型
-
布尔值
-
true/false
let isNull:boolean=true;
-
-
数字
-
二进制/八进制/十进制/十六进制
let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; let decLiteral: number = 6; let hexLiteral: number = 0xf00d;
-
-
字符串
-
" " / ' '
let username: string = "li"; -
还可以使用模板字符串定义多行文本和内嵌表达式
let username: string = `li`; let age: number = 20; let person: string = `hello,my name is ${username}`;
-
-
数组
-
在元素类型后面接上[ ],表示由此类型元素组成的一个数组
let list: number[] = [1, 2, 3]; -
使用数组泛型,
Array<元素类型>let lis: Array<number> = [1, 2, 3];
-
-
元组Tuple
-
允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
//声明一个元组类型 let x: [string, number]; //初始化 x = ["hello", 20];
-
-
枚举
-
对
JavaScript标准数据类型的一个补充//默认从0开始编号 enum Color { Red, Green, Blue, } let c: Color = Color.Green; //从1开始编号 enum Color { Red = 1, Green, Blue, } let c: Color = Color.Green;
-
-
任意值
-
any标记不清楚类型的变量--->直接通过编译检查let notSure: any = 4; notSure = "maybe"; notSure = false;
-
-
空值
-
void类型与any类型相反,表示没有任何类型 -
当一个函数没有返回值时,返回值类型是
voidfunction warnUser(): void { console.log("warning msg"); } //void类型变量只能赋予undefined和null
-
-
Null和Undefined
- 默认情况下,
null和undefined是所有类型的子类型
- 默认情况下,
-
Never
-
永不存在的值的类型(总是会抛出异常/不会有返回值的函数表达式或箭头函数表达式的返回值类型)
-
never类型是任何类型的子类型,也可以赋值给任何类型 -
never类型没有子类型,其他类型不可以赋值给never类型(除了never本身)// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
-
-
类型断言(不进行特殊的数据检查和解构,只在编译阶段起作用)
-
“尖括号”语法
let someValue: any = "string"; let strlength: number = (<string>someValue).length; -
as语法let someValue: any = "string"; let strlength: number = (someValue as string).length;
-
-