[英]Typescript Property 'label' does not exist on type 'string
我使用以下代碼
interface State {
resourceGroup: QuickPickItem | string;
}
setEvent(state.resourceGroup?.label).catch(err => console.error(err));
為此,我收到以下錯誤
any
Property 'label' does not exist on type 'string | QuickPickItem'.
Property 'label' does not exist on type 'string'.
https://code.visualstudio.com/api/references/vscode-api#QuickPickItem
知道如何避免這個錯誤嗎? 不使用 ts-ignore 抑制它因為我無法更改QuickPickItem
...
更新
我嘗試在答案中執行建議,但仍然遇到相同的錯誤
在這種情況下,您需要區分您擁有的聯合類型中的兩個可能值。
例如,您可以確保該值不是字符串。 這樣 typescript 將推斷該值是QuickPickItem
類型
interface State {
resourceGroup: QuickPickItem | string;
}
let state: State = getState();
if (typeof state.resourceGroup != 'string' && state.resourceGroup?.label){
setEvent(...)
}
您可以在 typescript 手冊中了解更多信息。
類型保護和區分類型
最簡單的方法是測試變量中是否存在label
屬性:
if(state.resourceGroup.label) {
setEvent(state.resourceGroup.label).catch(err => console.error(err));
}
其他(不安全 - 所以只有當你 100% 確定你在做什么)方法是使用感嘆號手動斷言該屬性的存在:
setEvent(state.resourceGroup.label!).catch(err => console.error(err));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.