Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TypeScript中递归声明此类型?_Typescript_Type Declaration - Fatal编程技术网

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

如何在TypeScript中递归声明此类型?,typescript,type-declaration,Typescript,Type Declaration,我要声明的是一个可以保存字符串的类型,或者一个返回字符串的函数,或者一个返回字符串的函数,等等 基本上是这样的,但是递归的,可能没有我现在拥有的5个函数的任意限制 类型NestedStringProvider= 串| (()=>字符串)| (()=>()=>字符串)| (()=>()=>()=>字符串)| (()=>()=>()=>()=>()=>字符串)| (()=>()=>()=>()=>()=>()=>字符串); 这样我就可以: let s:NestedStringProvider; s

我要声明的是一个可以保存字符串的类型,或者一个返回字符串的函数,或者一个返回字符串的函数,等等

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

类型NestedStringProvider=
串|
(()=>字符串)|
(()=>()=>字符串)|
(()=>()=>()=>字符串)|
(()=>()=>()=>()=>()=>字符串)|
(()=>()=>()=>()=>()=>()=>字符串);
这样我就可以:

let s:NestedStringProvider;
s=“foobar”//好啊
s=函数(){return()=>“string”};//好啊
s=1;//错误

我使用的是TypeScript 3.1.6。如果这有助于解决我的问题,我将准备升级。

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

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