V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cs3230524
V2EX  ›  TypeScript

如何在迭代泛型集合的时候精确获取类型啊?东西有点儿多,大佬们给解惑

  •  
  •   cs3230524 · 2020-03-05 01:47:27 +08:00 · 1428 次点击
    这是一个创建于 1759 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如:

    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()) {
            //我想在写代码的阶段就能获取到具体的类型,可以实现吗?
    
        }
    }
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:16 · PVG 03:16 · LAX 11:16 · JFK 14:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.