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

TS 下面,如果某函数的参数是多种类型,在使用前,如何判断是哪种具体的类型?

  •  
  •   yazoox · 2020-06-29 16:29:41 +08:00 · 3023 次点击
    这是一个创建于 1608 天前的主题,其中的信息可能已经有所发展或是发生改变。
    interface A {
      name: string,
      displayname: string, 
      age: number
    }
    
    interface B{
      name: string,
      displayname: string,
      age: number,
      gender: number
    }
    
    function generate(item: A | B): string {
      // 这里需求是,判断一下,传入的参数 item 是 A 还是 B,根据不同的类型,做不同的事情
      
    }
    

    请不要诟病这个函数的 design,现在没有办法 refactor 函数

    谢谢!

    4 条回复    2020-06-30 12:58:00 +08:00
    unhappy224
        1
    unhappy224  
       2020-06-29 18:30:24 +08:00   ❤️ 1
    function generate(item: A | B): string {
    if ('gender' in item) {
    return 'B';
    }
    return 'A';
    }
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2020-06-29 21:14:19 +08:00 via Android
    js 怎么做 ts 就怎么做,就像 1 楼那样就行
    MikeFeng
        3
    MikeFeng  
       2020-06-29 22:21:16 +08:00
    自己搜一下——typescript 类型保护
    Yumwey
        4
    Yumwey  
       2020-06-30 12:58:00 +08:00 via Android
    要不,咱用下泛型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2621 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:34 · PVG 12:34 · LAX 20:34 · JFK 23:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.