我有一個類 Button,它實作了 IButton 介面。
class Button implements IButton {
public fit = 'medium';
}
declare type Fit = 'small' | 'medium' | 'large';
export interface IButton {
fit: Fit;
}
我希望能夠將medium默認值分配給該fit屬性,但是當我嘗試這樣做時,TypeScript 會引發錯誤。
Property 'fit' in type 'Button' is not assignable to the same property in base type 'IButton'.
Type 'string' is not assignable to type 'Fit'.
有沒有不同的方法來存檔這個?
uj5u.com熱心網友回復:
當您將變數宣告為public fit = 'medium'時,TypeScript 將推斷出的型別fit為string。這與較窄型別的 interfaceIButtons屬性不匹配。fit
您有多種選擇來解決此問題:
- 將變數宣告為
readonly
public readonly fit = 'medium'
- 使用
as const或as Fit
public fit = 'medium' as Fit
//public fit = 'medium' as const
- 手動宣告正確的型別
public fit: Fit = 'medium'
注意:只有第 3 個選項才能讓您在運行時as Fit修改 的值。fit
uj5u.com熱心網友回復:
您可以嘗試匯出 Enum Fit 并執行以下操作。
class Button implements IButton {
public fit = 'medium' as Fit;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484020.html
上一篇:如何使未定義的引數不需要?
