当前位置:网站首页>typescript学习笔记(三)

typescript学习笔记(三)

2023-01-19 15:20:56tianming2018

模块化

配置名称含义
module设置编译结果中使用的模块化标准
moduleResolution设置解析模块的模式
noImplicitUseStrict编译结果中不包含"use strict"
removeComments编译结果移除注释
noEmitOnError错误时不生成编译结果
esModuleInterop启用es模块化交互非es模块导出

前端领域中的模块化标准:ES6、commonjs、amd、umd、system、esnext

TS中如何书写模块化语句

TS中,导入和导出模块,统一使用ES6的模块化标准

编译结果中的模块化

可配置

TS中的模块化在编译结果中:

  • 如果编译结果的模块化标准是ES6: 没有区别
  • 如果编译结果的模块化标准是commonjs:导出的声明会变成exports的属性,默认的导出会变成exports的default属性;

如何在TS中书写commonjs模块化代码

导出:export = xxx

导入:import xxx = require(“xxx”)

// 导出
export = {
    
    name: "kevin",
    sum(a: number, b: number) {
    
        return a + b;
    }
}
// 导入
import myModule = require("./myModule")

模块解析

模块解析:应该从什么位置寻找模块

TS中,有两种模块解析策略

  • classic:经典
  • node:node解析策略(唯一的变化,是将js替换为ts)
    • 相对路径require("./xxx")
    • 非相对模块require("xxx")

扩展类型-接口

接口:inteface

扩展类型:类型别名、枚举、接口、类

TypeScript的接口:用于约束类、对象、函数的契约(标准)

契约(标准)的形式:

  • API文档,弱标准
  • 代码约束,强标准

和类型别名一样,接口,不出现在编译结果中

  1. 接口约束对象

  2. 接口约束函数

接口可以继承

可以通过接口之间的继承,实现多种接口的组合

使用类型别名可以实现类似的组合效果,需要通过&,它叫做交叉类型

它们的区别:

  • 子接口不能覆盖父接口的成员
  • 交叉类型会把相同成员的类型进行交叉

readonly

只读修饰符,修饰的目标是只读

只读修饰符不在编译结果中

类型兼容性

B->A,如果能完成赋值,则B和A类型兼容

鸭子辨型法(子结构辨型法):目标类型需要某一些特征,赋值的类型只要能满足该特征即可

  • 基本类型:完全匹配

  • 对象类型:鸭子辨型法

类型断言

当直接使用对象字面量赋值的时候,会进行更加严格的判断

参数:传递给目标函数的参数可以少,但不可以多

返回值:要求返回必须返回;不要求返回,你随意;

原网站

版权声明
本文为[tianming2018]所创,转载请带上原文链接,感谢
https://blog.csdn.net/tianming2018/article/details/128541699

随机推荐