TypeScript 是什么?
- 是以avaScript为基础构建的语言
- 个一JavaScript的超集。
- 可以在任何支持JavaScript的平台中执行。
- TypeScript扩展了JavaScript,并添加了类型。
- TS不能被JS解析器直接执行,需要编译成js。
基本类型
声明完变量直赴进行赋值
let c: boolean = false;
如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
let c = false;
c = true;
JS 中的函数是不考虑参数的类型和个数的
function sum(a, b){ return a + b; } sum( 123, 456); // 579 sum( 123, "456"); // 123456
复制
如果是ts,参数类型限制,个数也有限制
在参数小括号后面加类型设置函数的返回值
function sum(a:number, b:number):number{ return a + b; } sum( 123, 456); // 579
复制
自动类型判断
。 TS拥有自动的类型判断机制
。当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型。所以如果你的变是的声明和赋值时同时进行的,可以省略掉类型声明。
类型
类型 | 例子 | 描述 |
---|---|---|
number | 1,-33,2.5 | 任意数字 |
string | *hi’, “hi”, hi | 任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是该字面量的值 |
any | * | 任意类型 |
unknown | * | 类型安全的any |
void | 空值(undefined) | 没有值 (或undefined) |
never | 没有值 | 不能是任何值 |
object | {“key”:“value”} | 任意的]S对象 |
array | [1,2,3] | 任意]S数组 |
tuple | [4,5] | 元素,TS新增类型,固定长度数组 |
enum | enum(A. B) | 枚举,TS中新增类型 |
使用
// 字面量 let a:10; a = 10;// a只能等于 10. let sex : "male" |"female"; sex = "male" sex = "female" // sex 只能等于这两个值 // any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测// 使用TS时, let d: any; // 声明变如果不指定类型,则TS 解析器会自动判断变的类型为any(隐式的any) let d; d = 10; d = 'hello'; d = true; let e:unknown; e = "hello" e = 10 e = false; let s :string; // d的类型是any,它可以赋值给任意变量 s = d; e = 'hello'; // unknown 实际上就是一个类型安全的any。 unknown美型的变量,不能直接赋值给其他交量。 // 解决1:可以通过判断类型来解决赋值 if(typeof e ==="string"){ s =e; } // 解决2:类型断言,可以用来告诉解析器变最的实际类型 s = e as string; // 语法1:变 as 类型 s = <string>e; // 语法2:<类 变量 // never 表示永远不会返回结果 function fn2(): never{ throw new Error(报错了!); } // 用来指定对象中可以包含哪些属性 // 语法: {属性名: 属性值,属性名: 属性值} // 在属性名后边加上?,表示属性是可选的 let b: (name: string, age?: number}; b = {name:孙悟空,,age: 181}; // [propName: string]: any 表示任意类型的属性 let c: (name: string, [propName: string]: any} c ={ name:'猪八戒',age: 18,gender:'男'; } //设置函数结构的类型声明: //语法:(形参: 类型,形参: 类型 ...) => 返回值 let d: (a: number ,b: number)=>number; d = function (n1: number ,n2: number ): number{ return 10; } // 数组的类型声明: //语法1: 类型[] // 语法2:Array<类型> // string[] 表示字符串数组 let e: string[]; e = ['a','b','c']; let g: Array<number>; g = [1, 2,3]; //元组,元组就是固定长度的数组 //语法:[类型,类型,类型] let h: [string, number]; h = ['hello',123]; enum Gender{ Male =0 Female = 1 } let i:{name: string,gender: Gender) i={ name:"zhangsan", gender:Gender.Male // 0 } console.log(i.gender === Gender.Male)
复制
补充
// &表示同时要满足 let j: { name: string } & { age: number }; // j = {name:"孙悟空",age: 181} // 美型的别名 type myType = 1 1 2 1 3 1 4 1 5; let k: myType; let m: myType; k =2;
复制