繁体   English   中英

Typescript 函数定义多个返回类型

[英]Typescript function define multiple return type

嘿,我是打字稿的新手,我有返回对象或数组的函数

const workspace = (workspace: string)  => {

我如何定义相同的返回类型

const workspace = (workspace:string): Array | Object => {

给出以下错误

Generic type 'Array<T>' 

我事先不知道 Array 的结构,也不确定这是否是Array | Object Array | Object与否。

Array不是类型而是类型构造函数, Array<SomeType>是一种类型,这就是为什么你不能说 something 返回类型构造函数,它需要返回特定的类型。 如果您的函数是多态的并且可以处理任何数组,您可以将类型泛型参数传递给Array类型构造函数。 考虑以下代码:

const workspace = <T>(workspace:string): Array<T> | Object => { ...

因此,您返回workspace将应用特定类型。

如果不需要知道元素,您也可以只传递unknownany

const workspace = (workspace:string): Array<any> | Object => { ...

关于类型构造函数的另一种解释。 每个需要另一种类型作为参数的类型定义都是一个类型构造函数,您可以将其视为类型上的函数。 考虑示例:

type AConstructor<T> = {a: T} // type constructor
type A = AConstructor<string> // evaluates to type {a: string}

好吧, Array 类型是通用的,你需要说你要返回的数组。

const workspace = (workspace:string): Array<SomeType> | Object => { }

如果您真的不知道数组中元素的类型,则需要使用unknown

const workspace = (workspace:string): Array<unknown> | Object => { }

另请检查此答案以找出 Object 和 object 之间的区别: Difference between 'object' and {} in TypeScript

你可能想要object

尝试

Array<String>;

如果无法确定类型,请使用<any>

如果您不知道它将返回什么类型的数据,您可以使用any

const workspace = (workspace:string): Array<any> | Object => {}

-----------------额外说明------------------

您可以使用 typescript 的方式来定义函数。 请参考以下代码:

workspace(workspace: string): Array<any> | object {
                //your code here
                // your code here
              }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM