gpt4 book ai didi

typescript - 如何在 TypeScript 中引用旧式构造函数的实例类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:35:14 27 4
gpt4 key购买 nike

如何通过函数作为类型注释使用旧式类声明

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com