有哪些TypeScript编程难题让你花费了大量时间?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1293个文字,预计阅读时间需要6分钟。
记录一些在ts上花费时间的地方:
1. Stackoverflow上几乎所有问题都有解答,百度上是真的没方法用。
2.坑:as断言的兼容性误解,如a as b这种代码是不会报错的。
3.interface和type的不一致行为。
记录一些自己在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强制断言。
本文共计1293个文字,预计阅读时间需要6分钟。
记录一些在ts上花费时间的地方:
1. Stackoverflow上几乎所有问题都有解答,百度上是真的没方法用。
2.坑:as断言的兼容性误解,如a as b这种代码是不会报错的。
3.interface和type的不一致行为。
记录一些自己在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强制断言。

