阅读本教程,我发现在Typescript中声明类的一种方法是使用class
类似的语法。
class Person {
constructor(name: string) {
this.name = name
}
}
编译后将生成以下Javascript代码。
//Generated by typescript 1.8.10
var Person = (function () {
function Person(name) {
this.name = name
}
return Person;
}());
我的问题是,是否有可能像这样使用生成的Javascript语法在Typescript中声明一个类?
function Person(name: string) {
this.name = name
}
作为对现有答案的改进,您还可以通过以下方式进行操作:
interface Person {
name: string;
}
interface PersonConstructor {
new(name: string): Person;
}
const Person: PersonConstructor = function (this: Person, name: string) {
this.name = name;
} as any;
const p = new Person("Alice");
console.log(p.name); // Alice
这样,即使您仍然在乎这些内容,也可以保留一些类型安全性。
这种方法还允许您Person
通过先将静态方法添加到中来定义静态方法PersonConstructor
。因此,您可以执行以下操作:
interface PersonConstructor {
new(name: string): Person;
foo(bar: string): void;
}
然后做:
Person.foo = (bar: string) => {
console.log(`foo ${bar}`);
}
并用 Person.foo("something");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句