TS(qf3-1)

一、概述

Microsoft 2012年推出

类型错误

是一个在代码运行之前运行的工具(静态编译)

ECMAScript是JS的标准、TS是JS的超集

类型检查

优化编译
// 解决TS和JS冲突问题
1.tsc --init
// 自动编译
2.tsc --watch

// 降级编译
{
  "compilerOptions": {
    "target": "es5"
  }
}

// 严格模式
{
  "compilerOptions": {
    "strict": true,                                
    "noImplicitAny": true,                        
    "strictNullChecks": true
  }
}

{
  "compilerOptions": {
    "rootDir": "./src",  
    "outDir": "./dist"                                
  }
}

数组:type[]、Array<type>

类型别名(给类型定义一个名字,用这个名字来代替定义的类型)

// 扩展接口
interface IAnimal {
    name: string
}
interface IDog extends IAnimal {
    bark: string
}

type Animal = {
    name: string
}
type Dog = Animal & {
    bark: string
}

// 向现有的类型添加字段
interface IPerson {
    name: string
}
interface IPerson {
    age: number
}

类型断言
1.const myCanvas1 = document.getElementById("canvasId") as HTMLCanvasElement
2.const myCanvas2 = <HTMLCanvasElement>document.getElementById("canvasId")

function request(url: string, method: 'GET' | 'POST') { }
// 方式一
const params = {
    url: 'www.baidu.com',
    method: 'GET' as 'GET'
}
request(params.url, params.method)

// 方式二
const params = {
    url: 'www.baidu.com',
    method: 'GET'
}
request(params.url, params.method as 'GET')

// 方式三
const params = {
    url: 'www.baidu.com',
    method: 'GET'
} as const
request(params.url, params.method)

枚举:一组命名常量

bigint:非常大的整数
symbol:全局唯一引用

// "target": "es2020" 
const a: bigint = BigInt(100)
const b: bigint = 100n

in操作符缩小:"value" in x

type Fish = {
    swim: () => void
}
type Bird = {
    fly: () => void
}

function move(animal: Fish | Bird) {
    if ('swim' in animal) {
        return animal.swim()
    }
    return animal.fly()
}

type DescribabletionFunction = {
    describe: string
    (someArg: number): boolean
}

function doSomething(fn: DescribabletionFunction) {
    console.log(fn.describe)
    console.log(fn(10))
}

// 泛型函数-限制条件
function longest<T extends { length: number }>(a: T, b: T) {
    if (a.length > b.length) {
        return a
    } else {
        return b
    }
}

unknown:代表任何值,这与any类型类似,但更安全,因为对未知unknown值做任何事情都是不合法的

@千(gysr)[22]【b-qfjy】
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TS中常用的工具映射类型,让写TS时效率大大提升,避免无意义的重复性定义。 1.Omit 省略/剔除 顾名思义 可...
    勇敢的小拽马阅读 9,604评论 0 5
  • 一、JS设计模式 1.构造器模式 2.原型模式 注
    osoLife阅读 968评论 0 1
  • 晚上继续跑步10公里,这么好的天气又连续停跑了3天,挺无奈的,因为又被杂七杂八的事情给耽搁了,没办法成年人想坚持一...
    yw_go阅读 402评论 0 0
  • 今天周五。孙部让去交流参观赛轮心得,我什么都说不上来。 又写了一小会字,发现手腕的力量还是不行。可是这周末一定得把...
    f2f844be1b8e阅读 876评论 0 0
  • 此刻儿子躺在身边睡觉,一边看着他熟睡的面孔一边写着简书。 他长大后定不会记起,而我老了之后一定会经常回味,时间无法...
    明哥001阅读 937评论 0 3