作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何通过函数作为类型注释使用旧式类声明
function Foo () {}
Foo.prototype.bar = 'bar';
let x:Foo;
console.log(x.bar);
不幸的是,我们无法编写“let x:Foo”,因为 TypeScript 因错误而失败:
[ts] Cannot find name 'Foo'.
我尝试了其他方式:
function Foo () {}
Foo.prototype.bar = 'bar';
declare type FooType = typeof Foo
let x:FooType;
但是x
是函数,而不是 Foo
的实例. TypeScript 也有 InstanceType<T>
泛型,但同样 - 只是 Foo
我们不能使用,因为 Foo
不是类型注解。
关于如何使用 Foo
这样的类函数的任何解决方案使用原型(prototype)作为类型注释?
编辑
当然,我们可以创建额外的 IFoo
正如答案中所建议的那样与所有复制粘贴的属性进行交互,但是当你有很多属性时,这绝对不是你想要做的。然后还要保持功能原型(prototype)和界面同步也不会很有趣。你不觉得吗?
最佳答案
我会这样做:
// Use to specify the properties on your final object
interface IFoo {
bar: string;
}
// Class Definition
function Foo() { };
Foo.prototype.bar = 'bar';
// Use it
let x:IFoo = new Foo();
console.log(x.bar);
关于typescript - 如何在 TypeScript 中引用旧式构造函数的实例类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52291559/
我是一名优秀的程序员,十分优秀!