【问题标题】:Export and use a IIFE class in TypeScript在 TypeScript 中导出和使用 IIFE 类
【发布时间】:2019-02-15 16:15:23
【问题描述】:

我正在尝试做一个具有隐私性的模型类,所以我在 Answer 模型文件中有这个带有 clousures 的类:

export class Answer {
  getId;
  getText;

  constructor(id: string, text: string) {
    const idPrivate = id;
    const textPrivate = text;

    this.getId = () => idPrivate;
    this.getText = () => textPrivate;
  }
}

所以我可以在其他文件中这样使用它:

import {Answer} from '../shared/model/Answer';
...
const answers: Array<Answer> = [];
answers.push(new Answer('1', '1'));

现在,有了 ES6,我们有了 Symbol,所以我也在尝试这样做,但是在导出和使用该函数时遇到了问题。这是代码:

const Answer = (() => {
  const idPrivate = Symbol();
  const textPrivate = Symbol();

  class Answer {
    constructor(id: string, text: string) {
      this[idPrivate] = id;
      this[textPrivate] = text;
    }

    getId() {
      return this[idPrivate];
    }

    getText() {
      return this[textPrivate];
    }
  }

  return Answer;
})();

export {Answer};

如何使用此 IIFE 功能?例如这段代码:

const answer = Answer('ss', 'ss');

我收到此错误消息:“方法表达式不是函数类型”。如何调用 Answer 构造函数?

【问题讨论】:

  • 您正在导出类Answer 并像函数一样调用它?使用new 上课

标签: javascript angular typescript model iife


【解决方案1】:

我相信我们用'new'来调用类,比如:new Answer()

【讨论】:

  • 是的,问题是当我创建“const answers:Array = [];”时我收到“未解析类型答案”的错误,如何定义答案数组?
  • 不做 const answers= [] ok?
  • 使用TS是不是更好地定义了数组类型?
猜你喜欢
  • 2019-04-27
  • 2021-03-15
  • 2021-10-23
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 2022-07-20
  • 2020-08-09
  • 1970-01-01
相关资源
最近更新 更多