V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yazoox

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

  •  
  •   yazoox · Jun 29, 2020 · 3660 views
    This topic created in 2140 days ago, the information mentioned may be changed or developed.
    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 replies    2020-06-30 12:58:00 +08:00
    unhappy224
        1
    unhappy224  
       Jun 29, 2020   ❤️ 1
    function generate(item: A | B): string {
    if ('gender' in item) {
    return 'B';
    }
    return 'A';
    }
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       Jun 29, 2020 via Android
    js 怎么做 ts 就怎么做,就像 1 楼那样就行
    MikeFeng
        3
    MikeFeng  
       Jun 29, 2020
    自己搜一下——typescript 类型保护
    Yumwey
        4
    Yumwey  
       Jun 30, 2020 via Android
    要不,咱用下泛型
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4644 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 10:04 · PVG 18:04 · LAX 03:04 · JFK 06:04
    ♥ Do have faith in what you're doing.