类型 Button' 中的 属性 'fit' 不可分配给基类型 'IButton' 中的相同 属性。类型 'string' 不可分配给类型 'Fit'
Property 'fit' in type Button' is not assignable to the same property in base type 'IButton'. Type 'string' is not assignable to type 'Fit'
我有一个 class 按钮,它实现了 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'.
是否有其他存档方式?
当您将变量声明为 public fit = 'medium'
时,TypeScript 会将 fit
的类型推断为 string
。这与接口 IButtons
的 属性 fit
不匹配,后者属于较窄的类型。
您有多种选择来解决这个问题:
- 将变量声明为
readonly
public readonly fit = 'medium'
- 使用
as const
或as Fit
public fit = 'medium' as Fit
//public fit = 'medium' as const
- 手动声明正确的类型
public fit: Fit = 'medium'
注意:只有 as Fit
或第三个选项可以让您在运行时修改 fit
的值。
您可以尝试导出 Enum Fit 并执行以下操作。
class Button implements IButton {
public fit = 'medium' as Fit;
}
我有一个 class 按钮,它实现了 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'.
是否有其他存档方式?
当您将变量声明为 public fit = 'medium'
时,TypeScript 会将 fit
的类型推断为 string
。这与接口 IButtons
的 属性 fit
不匹配,后者属于较窄的类型。
您有多种选择来解决这个问题:
- 将变量声明为
readonly
public readonly fit = 'medium'
- 使用
as const
或as Fit
public fit = 'medium' as Fit
//public fit = 'medium' as const
- 手动声明正确的类型
public fit: Fit = 'medium'
注意:只有 as Fit
或第三个选项可以让您在运行时修改 fit
的值。
您可以尝试导出 Enum Fit 并执行以下操作。
class Button implements IButton {
public fit = 'medium' as Fit;
}