我可以看到以下代码没有触发任何错误或警告:
type myType = {a:number,b:number}
const myObject = {a:1} as myType
我们只是遇到了一个问题,使用"as"导致了一个生产错误,这让我认为可能有一条eslint规则应该不允许这样做.你知道有这样的规则吗?
我可以看到以下代码没有触发任何错误或警告:
type myType = {a:number,b:number}
const myObject = {a:1} as myType
我们只是遇到了一个问题,使用"as"导致了一个生产错误,这让我认为可能有一条eslint规则应该不允许这样做.你知道有这样的规则吗?
是的,如果不小心使用,type assertion真的会很危险.不,ESLint不提供完全禁止开箱即用的类型断言的规则.因此,您必须使用定制插件,如
eslint-plugin-no-type-assertion个
不允许在类型脚本代码中使用类型断言.该规则将禁止AS运算符和尖括号语法,除非用于常量断言或与未知类型一起使用.该规则还禁止非空断言.
还有其他包提供了不允许类型断言的选项:
assertionStyle
设置为"never"
:此选项定义预期的断言样式.AssertionStyle的有效值为: 这将迫使你始终使用...以Foo的身份. 尖括号将强制您始终使用... 永远不会强制您不做任何类型断言.
禁止对象文本出现在类型断言表达式中.仍然允许转换为any或unknown.
然而,我不确定完全禁止类型断言是否是一个好主意.在您真正需要它的地方有一些有效的用例.你minimal, reproducible example岁只是一个严重的程序员错误,基本类型安全被忽略了.
根据惯例,P.S.type
alias names应以大写字母拼写(如type MyType = ...
)