我有以下的一般類的打字稿打字稿:泛型類型基本類型約束
type UserId = number
type Primative = string | number | boolean
class ColumnValue<T, S extends Primative> {
constructor(public columnName: String, public value: S) { }
}
abstract class Column<T> {
constructor(public columnName: String) { }
public set<S extends Primative>(value: T): ColumnValue<T, S> {
return new ColumnValue(this.columnName, this.getValue(value))
}
public abstract getValue<S extends Primative>(value: T): S
}
let id = new class extends Column<UserId> {
constructor() { super("id") }
public getValue(value: UserId): number {
return value
}
}()
,但我不知道爲什麼得到這個錯誤類「(匿名類)」不正確地擴展基類「列」。 屬性'getValue'的類型不兼容。 類型'(value:number)=> number'不能分配給type'(value:number)=> S'。 類型「數」是不能分配給輸入「S」
可能是您必須以具體的方式定義S. S擴展布爾值,但是它真的是什麼? – jaibatrik
@jaibatrik我編輯我的問題也許它現在更清楚,我希望ts編譯器推斷值類型** ColumnValue類**並確保它是** Primative類型** –