在Typescript版本2.4中,添加了弱类型检测。现在我同意这是一个很好的特性,当你给一个类型赋值时,如果一个类型的可选属性没有一个属性匹配,这将有助于捕获一大堆错误。
不幸的是,对于最初用Javascript编写的大型项目,然后迁移到Typescript,将会出现使用弱类型漏洞的情况。
为了轻松迁移到TS2.4,然后逐步删除所有弱类型的违规行为-有人知道一个标志或黑客暂时禁用弱类型检测吗?
发布于 2020-09-04 23:49:53
没有编译器标志,但我可以推荐您使用ts-migrate。它会用any把你现有的js代码转换成ts代码,这样推理就不起作用了。
发布于 2021-09-21 15:13:59
通常,在与完整的可选类型(也就是只有可选属性的对象)相交时,会抛出此错误。
有时,在编写泛型库代码时,这是您想要做的事情,即使交集也会导致完整的可选类型。
普通的TS交集不会让你与弱类型相交,但你可以自己实现交集:
export type WeakIntersect<T, U> = Record<string, never> extends T
? Record<string, never> extends U
? T & U // fallback to compiler check for weak types
: U
: Record<string, never> extends U
? T
: T & UFullyOptional1 & FullyOptional2 // error
WeakIntersect<FullyOptional1, FullyOptional2> // ok在弱类型上使用extends时,也可以避免该错误:
export type AllowWeakType<T> = Record<string, never> extends T ? any : TT extends FullyOptional // error
T extends AllowWeakType<FullyOptional> // okhttps://stackoverflow.com/questions/46237482
复制相似问题