如何在 TypeScript 中递归声明此类型?
How to recursively declare this type in TypeScript?
我要声明的是一个可以容纳一个字符串的类型,或者一个returns一个字符串的函数,或者一个returns一个returns一个字符串的函数等等。
基本上是这样的,但是递归地并且可能没有我现在拥有的 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。如果这对我的问题有帮助,我会准备升级。
您可以简单地递归引用您的类型:
type NestedStringProvider =
| string
| (() => NestedStringProvider);
我要声明的是一个可以容纳一个字符串的类型,或者一个returns一个字符串的函数,或者一个returns一个returns一个字符串的函数等等。
基本上是这样的,但是递归地并且可能没有我现在拥有的 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。如果这对我的问题有帮助,我会准备升级。
您可以简单地递归引用您的类型:
type NestedStringProvider =
| string
| (() => NestedStringProvider);