使用TypeScript的“任何”类型,但严格来说是真实的

时间:2017-10-02 03:42:37

标签: node.js typescript

我希望做这样的事情:

v.foo = function(val: any){

};

问题是我可以用null调用foo,如下所示:

v.foo(null);

相反,我想宣布这样的事情:

v.foo = function(val: truthy){

};

其中val几乎可以是任何东西,但必须是真实的(非虚假的)。

是否可以使用TS?

1 个答案:

答案 0 :(得分:2)

您可以将此类型定义为object的{​​{3}}和原语以及启用 strictNullChecks

type Truthy = object | string | number | boolean;

function foo(val: Truthy) {

};

foo({ a: 1});
foo('');
foo(1);
foo(new Date());
foo(false);
foo([]);

foo(null); //error
foo(undefined); //error