小编JL2*_*235的帖子

使用TypeScript中的属性构建函数对象

我想创建一个函数对象,它还具有一些属性.例如在JavaScript中我会这样做:

var f = function() { }
f.someValue = 3;
Run Code Online (Sandbox Code Playgroud)

现在在TypeScript中,我可以将其描述为:

var f: { (): any; someValue: number; };
Run Code Online (Sandbox Code Playgroud)

但是我不能在不需要演员的情况下构建它.如:

var f: { (): any; someValue: number; } =
    <{ (): any; someValue: number; }>(
        function() { }
    );
f.someValue = 3;
Run Code Online (Sandbox Code Playgroud)

如果没有演员,你会如何建立这个?

casting function-object typescript

67
推荐指数
5
解决办法
3万
查看次数

如何在TypeScript中使用匿名类

我正在尝试创建一个辅助函数,添加currying,以生成类的常见设置.例如:

class Person {
    private name: string;
    private sex: string;

    constructor (name: string, sex: string) {
        this.name = name;
        this.sex = sex;
    }
}

var newPersonSex = function (sex: string) {
    return function (name: string) {
        return new Person(name, sex);
    }
}

var MalePerson = newPersonSex('male'); 
var FemalePerson = newPersonSex('female'); 
Run Code Online (Sandbox Code Playgroud)

因此,现在当创建MalePerson和FemalePerson对象时,它实际上只返回Person的新实例.

var m = new MalePerson( 'john' );
Run Code Online (Sandbox Code Playgroud)

为了让类型系统允许我仍然使用'new',MalePerson需要是一个构造函数类型.例如:'new(name:string)=> Person'.这也需要是函数的返回类型.

但是添加了这些声明后,我无法从'newPersonSex'中返回一个函数.例如,这是无效的:

var newPersonSex = function (sex: string) : new(name:string) => Person {
    return function (name: string) {
        return new Person(name, …
Run Code Online (Sandbox Code Playgroud)

constructor anonymous-class typescript

7
推荐指数
1
解决办法
2426
查看次数