[英]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.