例如:
declare class Animal<State = any>{
life: number
state: State
setState(newState: State): void;
}
declare class Dog<state = any> extends Animal<state>{
name: string
}
declare class State {
synchronize: any
}
class Mystate extends State {
MyBalabalaState: string
}
class MyOtherstate extends State {
MyBalabalaState: string
}
class Labrador<Mystate=any> extends Dog<Mystate> {
balbala: string
}
class ChineseDog<MyOtherstate=any> extends Dog<MyOtherstate> {
balbala: string
}
function test() {
let mydog = new Labrador<Mystate>();
let mydog2 = new ChineseDog<MyOtherstate>();
let mydogState = new Mystate();
mydog.setState(mydogState);
let myDogOtherState=new MyOtherstate();
mydog2.setState(myDogOtherState)
//我的目的是想在循环泛型的时候能点出具体的提示
//可以实现吗?不知道怎么搞了。
//这里 map 要怎么定义才能获得 mydog 里面具体的 state 啊?
let map=new Map<string,Dog<State>>();//这样定义好像不行,在循环的时候不能获取属性
map.set("dog1",mydog);
map.set("dog2",mydog2);
//还有,这个循环不能指定具体类型吗?
for (const dog of map.values()) {
//我想在写代码的阶段就能获取到具体的类型,可以实现吗?
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.