【发布时间】:2021-03-06 08:18:27
【问题描述】:
我不明白为什么 TypeScript 允许在没有指定实际的泛型类型参数的情况下实例化泛型类?
在以下示例中,类Foo 有一个泛型类型参数T。
在const foo = new Foo() 行中,可以创建一个新的foo 对象,而无需指定泛型类型参数。
foo 的类型为 Foo<unknown>,bar 的类型为 valueType<unknown>。
为什么可能并且 TypeScript 不会引发错误? 这是什么用例? TypeScript 是否可以强制要求泛型类型参数?
type valueType<T> = {
name: string,
key: T|null,
};
class Foo<T> {
private value: valueType<T>;
public constructor() {
this.value = {
name: '',
key: null,
};
}
public setValue(value: valueType<T>) {
this.value = value;
}
public getValue(): valueType<T> {
return this.value;
}
}
const foo = new Foo();
const bar = foo.getValue();
【问题讨论】:
标签: typescript class generics typescript-generics