我在对象中有一系列函数。一个返回一个对象,另一个返回字符串:
{
id: 'test-1',
children: [
function childOne() {
return {
id: 'child-1'
}
},
function childTwo() {
return 'text.'
}
]
}
有没有办法在不执行函数的情况下检测返回值的类型?
答案 0 :(得分:9)
不在JavaScript中,不,因为:
TypeScript为JavaScript添加了一层静态类型检查,如果这是您经常发现需要的内容。但即使这样,该信息也会在运行时被删除,因此如果您在运行时需要这些信息,TypeScript将无济于事。
相反,您需要将其作为信息包含在数组中,例如:
{
id: 'test-1',
children: [
{
returns: "object",
fn: function childOne() {
return {
id: 'child-1'
};
}
},
{
returns: "string",
fn: function childTwo() {
return 'text.';
}
}
]
}
或者,因为函数是对象:
{
id: 'test-1',
children: [
addReturns("object", function childOne() {
return {
id: 'child-1'
}
}),
addReturns("string", function childTwo() {
return 'text.'
})
]
}
...其中addReturns
是:
function addReturns(type, fn) {
fn.returns = type;
return fn;
}