【发布时间】:2021-01-03 12:12:26
【问题描述】:
class Base<T> {
public state = {} as T;
public getState(): T {
return this.state
}
public setState(v: T) {
this.state = v
}
}
interface DogProps {
name: 'hello';
age: 123;
}
class Dog extends Base<DogProps> {
public sayName() {
console.log('name: ', this.state.name);
}
public sayAge() {
console.log('age: ', this.state.age);
}
}
function test<U, T extends Base<U>>(Cor: new () => T): [U, T] {
const dog = new Cor();
const state = dog.getState();
return [state, dog];
}
const [state1, dog1] = test(Dog); // state1 is unknow
const [state2, dog2] = test<DogProps, Dog>(Dog); // verbose but right
我是打字稿的新手。
我认为我写的代码是对的。但它没有按预期工作。
为什么 state1 的类型未知?
没有test<DogProps, Dog>(Dog),我能得到正确的类型吗?
非常感谢!!!
【问题讨论】:
标签: typescript typescript-typings type-inference typescript-generics