我想创建一个函数对象,它也有一些属性。例如在 JavaScript 中我会这样做:
var f = function() { }
f.someValue = 3;
现在在 TypeScript 中,我可以将其类型描述为:
var f: { (): any; someValue: number; };
但是,我实际上无法构建它,而无需强制转换。如:
var f: { (): any; someValue: number; } =
<{ (): any; someValue: number; }>(
function() { }
);
f.someValue = 3;
如果没有类型转换,您将如何构建它?
最佳答案
更新:这个答案是早期版本的 TypeScript 中的最佳解决方案,但在较新版本中有更好的选择(请参阅其他答案)。
已接受的答案有效并且在某些情况下可能是必需的,但缺点是没有为构建对象提供类型安全。如果您尝试添加未定义的属性,此技术至少会引发类型错误。
interface F { (): any; someValue: number; }
var f = <F>function () { }
f.someValue = 3
// type error
f.notDeclard = 3
关于casting - 在 TypeScript 中构建具有属性的函数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766528/