[英]Why I got an error type assertion on object literals is forbidden, use a type annotation instead.tslint(no-object-literal-type-assertion)?
我在 TS 中有代码
interface Context {
out: vscode.OutputChannel,
myPorts: number[]
}
const outputChannel = vscode.window.createOutputChannel('my-run');
const ctx = {
out: OutputChannel,
myPorts: []
} as Context;
我收到错误类型断言对象文字被禁止,请改用类型注释。 tslint(no-object-literal-type-assertion
此规则禁止使用as
来注释类型。 相反,您应该使用类型注释var: type
语法,如下所示:
const ctx: Context = {
out: OutputChannel,
myPorts: []
};
在某些情况下,该语法可能会引发一些错误,然后您可能需要将对象文字转换为any
with as any
(规则实际上允许):
const ctx: Context = {
out: OutputChannel,
myPorts: []
} as any;
现在,我不确定您是否询问如何让您的代码符合规则(我已经回答了),或者为什么首先出现警告。 如果是这样,这取决于您的 tslint 配置,如果您的配置不标准,您可能需要提供一些额外信息。 如果是,则必须转到tslint.json
文件添加:
no-object-literal-type-assertion: false
到json的rules
字段。
在将对象分配给其他类型之前,您可以通过将对象强制转换为unknown
来绕过no-object-literal-type-assertion规则。
例子:
const ctx = {
out: OutputChannel,
myPorts: []
} as unknown as Context;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.