如何在TypeScript中递归声明此类型?

时间:2019-07-14 11:41:07

标签: typescript type-declaration

我要声明的是可以容纳字符串的类型,或者返回字符串的函数,或者返回返回字符串的函数的函数,等等。

基本上是这样的,但是递归并且可能没有我现在拥有的5个函数的任意限制。

type NestedStringProvider =
string |
(() => string) |
(() => () => string) |
(() => () => () => string) |
(() => () => () => () => string) |
(() => () => () => () => () => string);

我可以这样做:

let s: NestedStringProvider;
s = "foobar"; // ok
s = function () { return () => "string" }; // ok
s = 1; // error

我正在使用TypeScript 3.1.6。如果可以解决我的问题,我将准备升级。

1 个答案:

答案 0 :(得分:0)

您可以简单地递归引用您的类型:

type NestedStringProvider =
    | string
    | (() => NestedStringProvider);

Checkout a playground link