我希望做这样的事情:
v.foo = function(val: any){
};
问题是我可以用null调用foo,如下所示:
v.foo(null);
相反,我想宣布这样的事情:
v.foo = function(val: truthy){
};
其中val几乎可以是任何东西,但必须是真实的(非虚假的)。
是否可以使用TS?
答案 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