【问题标题】:TypeScript This expression is not callableTypeScript 此表达式不可调用
【发布时间】:2021-06-12 00:26:19
【问题描述】:

我确定这是简单的代码,但我遇到了奇怪的错误但没有答案。 我也确实从中查找了答案:get and set in TypeScript

但我的代码完全一样。但是当我设置实例的属性时出现这个错误:

This expression is not callable.
  Type 'String' has no call signatures

这是我的代码

/**
 * Class that use underscore name and get set syntax
 */
class Person {

    // can give any property name, use convention `_`
    private _fname: string;
    private _lname: string;

    constructor(first: string, last: string) {
        this._fname = first;
        this._lname = last;
    }

    public get firstname(): string {
        return this._fname;
    }

    public set firstname(first: string) {
        this._fname = first;
    }

    public get lastname(): string {
        return this._lname;
    }

    public set lastname(last: string) {
        this._lname = last;
    }

}

// create instance
let character = new Person("Laila", "Law-Giver");
console.log(`Jarl of Riften is ${character.firstname} ${character.lastname}`);

character.firstname("Saerlund");
console.log(`${character.firstname} ${character.lastname} is her son, who sides with the Empire.`);

character.firstname("Saerlund"); 有错误

这是什么意思?我看不出代码有什么问题。

【问题讨论】:

  • 您已将其定义为 setter,因此将其用作属性:character.firstname = "name"
  • 作为一个自学成才/新手,我真的很感激这一点。谢谢!

标签: typescript


【解决方案1】:

您将firstname 声明为setter,并且为了为其分配新值,您应该执行以下操作:

character.firstname = "Saerlund";

【讨论】:

  • 作为一个自学成才/新手,我真的很感激这一点。谢谢!
猜你喜欢
  • 2020-08-16
  • 2021-04-27
  • 2021-02-12
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多