启用TypeScript
- webpack+babel
- vite2
https://cn.vitejs.dev/guide/#scaffolding-your-first-vite-project
- tsc ( typescript compilter
λ tsc 1.ts
类型 v.s. 类
JS基本类型
- 简单类型
null undefined
string boolean number
symbol bigint
- 复杂类型
object
- 特殊的
typeof
typeof 函数 → “function”
typeof null → “object”
JS中的类
只针对object
面向对象编程
- 基于class关键字
- 基于原型 ```javascript class Person{ 属性1 属性2 属性3 方法1 方法2 方法3 }
const p1 = new Person() p1.属性1 p1.方法1()
> **类型是对所有数据的分组,类只对对象的抽象编程****类型的作用**1. 减少bug1. 提示<a name="BAwJD"></a># TS支持的JS类型```jsxconst a: undefined = undefinedconst b: null = nullconst c: string = 'hi'const d: boolean = trueconst e: symbol = Symbol('hi')const f: bigint = 123nconst obj: Object={} //类const obj0: object={} //类型const arr: Array<string | number | null> = ['1','2',3,null]//类型写在函数体const add = (a: number,b: number): number => a+b//类型写在:后面const add0:(a: number,b: number)=> number = (a,b) => a+b//type缩写type Add = (a: number,b: number)=> numberconst add1: Add = (a,b) => a+b//有属性用interfaceinterface AddWithProps{(a: number,b: number) : numberxxx: string}const add2: AddWithProps = (a,b) => a+badd2.xxx = 'yyy'
TS额外的类型
let a: any = 1a = 'hi'type B = { name: string }let b: unknown = JSON.parse('{"name":"frank"}')console.log((b as B).name) //断言let print: () => void = function () {console.log(1)}type Dir = 1 | 2 | 3 | 4 | undefinedlet dir: Dir = 1switch (dir) {case 1:break;case 2:break;case 3:break;case 4:break;case undefined:break;default:console.log(dir) //dir: neverbreak;}//tuple 元组let p: [number, number] = [100.200]let p2: [number, string, boolean] = [100, 'x', true]enum Dir1 { 东, 南, 西, 北 }let d2: Dir2 = Dir1.东 //0let d3: Dir3 = Dir1.西 //2console.log(d2, d3) //0 2
