TypeScript中那些让人头疼的细节,如何高效解决?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1321个文字,预计阅读时间需要6分钟。
记录一些在ts上浪费过时间的地方:
1. 错误理解Stackoverflow:Stackoverflow上几乎所有问题都有答案,但百度可能不太适用。
2.对as断言的误解:例如,`a as b`这种代码不会报错。
3.interface和type的不一致使用:两者在ts中的作用类似,但使用方式有区别。
记录一些自己在ts上费过时间的地方。
(先吐个槽:stackoverflow是真的啥都有,百度是真的没法用)
坑
as断言的兼容性误解,如"a" as "b"这种代码是不会报错的。
interface和type的不一致行为(初遇还以为自己写错类型,一脸懵逼的):
type Type = { key: "value" } interface Interface { key: "value" } type 似乎没差别都是true = Type extends Interface ? Type extends Interface ? true : false : false type 坑点 = { [key: string]: 坑点 } | string type 测试<T> = T extends 坑点 ? true : false type 这个是true = 测试<Type> type 这个是false = 测试<Interface>
github上官方有说明,是故意留这么个坑的。说是因为interface可扩展(同名自动合并),所以不便检测。
用泛型实现函数重载的效果时,在函数的实现中,会因泛型不具备具体约束,导致经常需要使用as强制断言。
本文共计1321个文字,预计阅读时间需要6分钟。
记录一些在ts上浪费过时间的地方:
1. 错误理解Stackoverflow:Stackoverflow上几乎所有问题都有答案,但百度可能不太适用。
2.对as断言的误解:例如,`a as b`这种代码不会报错。
3.interface和type的不一致使用:两者在ts中的作用类似,但使用方式有区别。
记录一些自己在ts上费过时间的地方。
(先吐个槽:stackoverflow是真的啥都有,百度是真的没法用)
坑
as断言的兼容性误解,如"a" as "b"这种代码是不会报错的。
interface和type的不一致行为(初遇还以为自己写错类型,一脸懵逼的):
type Type = { key: "value" } interface Interface { key: "value" } type 似乎没差别都是true = Type extends Interface ? Type extends Interface ? true : false : false type 坑点 = { [key: string]: 坑点 } | string type 测试<T> = T extends 坑点 ? true : false type 这个是true = 测试<Type> type 这个是false = 测试<Interface>
github上官方有说明,是故意留这么个坑的。说是因为interface可扩展(同名自动合并),所以不便检测。
用泛型实现函数重载的效果时,在函数的实现中,会因泛型不具备具体约束,导致经常需要使用as强制断言。

