【前端】ts 那些零碎但常用的知识点

兄弟姐妹在线求帮请问下,【前端】ts 那些零碎但常用的知识点
最新回答
祁梦

2024-11-04 13:07:27

学习 TypeScript(ts)时,理解特定特性的使用和限制是关键,这些特性是与JavaScript(js)不同的。以下是对一些ts独有的特性的总结,这些特性在编写ts代码时非常常见和实用。

记录类型(Record)允许我们创建键值对类型的限制对象,确保对象的键和值符合特定类型。例如,我们可以创建一个对象,其中键必须为字符串,值必须是一个函数:

使用Record,确保了对象中的键只能为字符串类型,值为函数类型,避免了类型错误。但尝试使用不匹配的类型会导致编译错误。

泛型和泛型函数在ts中是用于提高代码的灵活性和可复用性的重要工具。泛型函数允许函数在运行时根据传入的类型参数进行不同的行为。例如,有一个函数,其输入参数是一个复杂接口的实例,输出结果也是这个实例,我们可以通过泛型函数来明确地定义这个接口的类型参数,而不仅仅是使用any。

我们也可以通过定义函数类型来为参数和返回值类型设定限制,让调用者决定具体的类型,从而确保函数使用时类型安全。

泛型类同样可以接收类型参数,增加类的灵活性。使用者可以自由指定类中的参数类型,但作为类的生产者,可以添加对参数类型的限制,以确保兼容性和类型安全。

在ts中,`unknown`关键字用于设计一种比`any`更安全的类型,它表示任何类型,但不能直接赋值给非`unknown`或`any`类型。数组类型在ts中与JavaScript中的数组相似,但提供了更强的类型安全性。

.d.ts文件专门用于定义类型声明,不需要export,提供代码提示和使用方便。通过创建.d.ts文件,如`IDog.d.ts`,我们可以定义类型,如`IDog`,并在项目中的任意`.ts`或`.tsx`文件中直接使用,无需import。

使用`.d.ts`文件时,需要注意模块的导入与使用纯.d.ts文件的界限。直接在.d.ts文件中声明函数会导致错误,正确的做法是使用type或interface定义函数,并在.d.ts文件中仅声明类型而不是实现。

在ts中使用infer关键字可以简化类型定义,例如,定义一个可以获取函数返回值的泛型类型,避免冗长的类型定义。infer帮助ts理解函数的返回类型,使得代码更简洁。

Omit操作符用于移除现有类型或接口中的特定字段,生成新的类型。例如,从`PureCat`接口中移除`age`字段,得到一个新类型。

&操作符用于合并类型,例如,合并`string`和`number`类型,得到一个可以接收`string`或`number`类型的联合类型。

is关键字用于检查变量是否属于特定类型,以欺骗ts编译器避免类型错误。例如,检查变量是否为字符串类型,即使ts编译器可能有疑虑,is关键字可以确保类型安全。

通过这些ts特性,我们可以编写更加类型安全、灵活和可维护的代码,减少运行时错误,并提高开发效率。