我有以下的一般类的打字稿打字稿:泛型类型基本类型约束
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类型** –