我可以看到以下代码没有触发任何错误或警告:

type myType = {a:number,b:number}
const myObject = {a:1} as myType

我们只是遇到了一个问题,使用"as"导致了一个生产错误,这让我认为可能有一条eslint规则应该不允许这样做.你知道有这样的规则吗?

推荐答案

是的,如果不小心使用,type assertion真的会很危险.不,ESLint不提供完全禁止开箱即用的类型断言的规则.因此,您必须使用定制插件,如

eslint-plugin-no-type-assertion

不允许在类型脚本代码中使用类型断言.该规则将禁止AS运算符和尖括号语法,除非用于常量断言或与未知类型一起使用.该规则还禁止非空断言.


还有其他包提供了不允许类型断言的选项:

此选项定义预期的断言样式.AssertionStyle的有效值为: 这将迫使你始终使用...以Foo的身份. 尖括号将强制您始终使用... 永远不会强制您不做任何类型断言.

禁止对象文本出现在类型断言表达式中.仍然允许转换为any或unknown.

然而,我不确定完全禁止类型断言是否是一个好主意.在您真正需要它的地方有一些有效的用例.你minimal, reproducible example岁只是一个严重的程序员错误,基本类型安全被忽略了.


根据惯例,P.S.type alias names应以大写字母拼写(如type MyType = ...)

Typescript相关问答推荐

实现忽略了JSSOM中的doctor.body.innerHTML集

如何获取数组所有可能的索引作为数字联合类型?

如何在方法中定义TypeScript返回类型,以根据参数化类型推断变量的存在?

在Angular中,如何在文件上传后清除文件上传文本框

类型脚本接口索引签名

泛型类型,引用其具有不同类型的属性之一

无法绑定ngModel.条件ngSwitchCase中的错误

当方法参数和返回类型不相互扩展时如何从类型脚本中的子类推断类型

无法从Chrome清除还原的初始状态数据

ANGLING v17 CLI默认设置为独立:延迟加载是否仍需要@NgModule进行路由?

如何缩小函数的返回类型?

TYPE FOR ARRAY,其中每个泛型元素是单独的键类型对,然后在该数组上循环

是否可以强制静态方法将同一类型的对象返回其自己的类?

为什么发送空字段?

将布尔值附加到每个对象特性

如何解决&Quot;类型不可分配给TypeScrip IF语句中的类型&Quot;?

KeyOf关键字在特定示例中是如何工作的

如何在Reaction Native中关注屏幕时正确更新状态变量?

断言同级为true或抛出错误的Typescript函数

如何使用 AWS CDK 扩展默认 ALB 控制器策略?