【问题标题】:Typescript equivalent of ? unknown wildcard打字稿相当于?未知通配符
【发布时间】:2016-01-19 06:21:06
【问题描述】:

假设我想在 Typescript 中声明一个泛型数组。未知通配符“?”的等价物是什么?在 Java 中?

这确实可以编译,但似乎有点尴尬MyGeneric<any>[];

我想要一个等价于JavaMyGeneric<?>[];的声明,也就是单一类型数组,但是声明的时候不知道类型。

干杯。

【问题讨论】:

  • 其实“any”是打字稿中的泛型。我不明白这个问题...
  • 选择你最喜欢的符号并重命名,lol ;P type ƒ = any; MyGeneric<ƒ>[];

标签: generics typescript


【解决方案1】:

我认为 Typescript 没有后期绑定泛型类型。

但是如果这个特定的代码是在一个函数的上下文中,你可以使用泛型来实现类似的事情。

function example<T>(val:T){
  let a : T[]

  return [val]
}

let a = example(4)
// number[] :: [4]

let b = example('hello')
// string[] :: ['hello']

这是一个交互式示例:link

尝试将鼠标悬停在 ab 上以查看它的实际效果。

【讨论】:

    【解决方案2】:

    假设我想在 Typescript 中声明一个泛型数组。未知通配符“?”的等价物是什么?在 Java 中?

    要有一个字符串数组

    var foo:string[]; 
    

    就 TypeScript 而言,这与以下内容相同:

    var foo:Array<string>; 
    

    如果你想要一个 anything 数组,那么只需使用any

    var foo:any[] = ['asdf',123]; // Anything is allowed in this array.
    

    【讨论】:

    • 我认为? 通配符表示单一类型,但类型尚不清楚。这与说数组可以包含任何内容不同。
    • @JamesForbes,这正是我试图做出的区分。谢谢。
    • 我认为这里的问题是什么等同于通配符,而不是专门针对任何类型的数组。有时我们需要使用像 `function fun(param: Type extends Base>) {}` 这样的后期泛型,那么在这种情况下有什么解决方案呢?另外,如果我们是从 java 端来的,那么? supers Base 呢?
    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多