我想让一个Typescript函数返回多个值。我该怎么做?还有-我该怎么声明类型?比如我想实现这样的目标:
let [text, value] = ReturnTwoValues("someinputstring")
kzmpq1sx1#
函数定义:
public ReturnTwoValues(someInput: string): [string, boolean] { const text = "hello" const value = true return [text, value] }
来电者:
e0bqpujr2#
public ReturnTwoValues(someInput: string): {text:string, value:boolean} { const text = "hello" const value = true return {text, value} } let {text, value} = ReturnTwoValues("some irrelevant string"); console.log(text) //output hello console.log(value) // output value
8cdiaqws3#
**注意:**此答案是在询问如何返回多个值 * 而不创建对象 * 时编写得.该问题后来经过编辑,删除了该要求.
当然,由于一个函数只返回一个值,那么返回多个值的唯一方法就是将它们一起 Package 在某个对象中;正如其他人在注解中提到的,数组是一种对象。然而,你不必为此创建一个 * 新 * 对象,所以 * 技术上 * 你所要求的是可能的。这里有一个解决方案,它使用函数本身作为返回值,所以它满足了当函数被调用时不创建对象的条件。
interface Foo { x: string, y: number, (): Foo } const foo = (() => { foo.x = 'bar'; foo.y = 1; return foo; }) as Foo; let { x, y } = foo(); console.log(x); // bar console.log(y); // 1
Playground链接不过,我并不建议实际执行此操作;由于它并不是每次都返回一个新的对象,所以如果保留对返回值的引用并期望其属性保持不变,则可能会导致bug。
3条答案
按热度按时间kzmpq1sx1#
函数定义:
来电者:
e0bqpujr2#
8cdiaqws3#
**注意:**此答案是在询问如何返回多个值 * 而不创建对象 * 时编写得.该问题后来经过编辑,删除了该要求.
当然,由于一个函数只返回一个值,那么返回多个值的唯一方法就是将它们一起 Package 在某个对象中;正如其他人在注解中提到的,数组是一种对象。然而,你不必为此创建一个 * 新 * 对象,所以 * 技术上 * 你所要求的是可能的。这里有一个解决方案,它使用函数本身作为返回值,所以它满足了当函数被调用时不创建对象的条件。
Playground链接
不过,我并不建议实际执行此操作;由于它并不是每次都返回一个新的对象,所以如果保留对返回值的引用并期望其属性保持不变,则可能会导致bug。