首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法禁用Typescript 2.4版引入的弱类型检测?

问有没有办法禁用Typescript 2.4版引入的弱类型检测?
EN

Stack Overflow用户
提问于 2017-09-15 18:31:25
回答 2查看 368关注 0票数 6

在Typescript版本2.4中,添加了弱类型检测。现在我同意这是一个很好的特性,当你给一个类型赋值时,如果一个类型的可选属性没有一个属性匹配,这将有助于捕获一大堆错误。

不幸的是,对于最初用Javascript编写的大型项目,然后迁移到Typescript,将会出现使用弱类型漏洞的情况。

为了轻松迁移到TS2.4,然后逐步删除所有弱类型的违规行为-有人知道一个标志或黑客暂时禁用弱类型检测吗?

EN

回答 2

Stack Overflow用户

发布于 2020-09-04 23:49:53

没有编译器标志,但我可以推荐您使用ts-migrate。它会用any把你现有的js代码转换成ts代码,这样推理就不起作用了。

票数 0
EN

Stack Overflow用户

发布于 2021-09-21 15:13:59

通常,在与完整的可选类型(也就是只有可选属性的对象)相交时,会抛出此错误。

有时,在编写泛型库代码时,这是您想要做的事情,即使交集也会导致完整的可选类型。

普通的TS交集不会让你与弱类型相交,但你可以自己实现交集:

代码语言:javascript
复制
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 & U
代码语言:javascript
复制
FullyOptional1 & FullyOptional2 // error
WeakIntersect<FullyOptional1, FullyOptional2> // ok

在弱类型上使用extends时,也可以避免该错误:

代码语言:javascript
复制
export type AllowWeakType<T> = Record<string, never> extends T ? any : T
代码语言:javascript
复制
T extends FullyOptional // error
T extends AllowWeakType<FullyOptional> // ok
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46237482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档