首页 > 解决方案 > How to declare getter in Typescript class

问题描述

How do I declare (not define) a getter inside a Typescript class?

Something like:

class Foo {
   declare get bar();
   ...
}

The actual implementation is added dynamically via some nonsense Javascript annotation, but I want to make Typescript aware that it exists.

标签: typescript

解决方案


如何使用可选属性创建接口?它会让 TypeScript 意识到它可能存在于这个类中。同时,该属性不会在类中定义,因此在这个无意义的 JS 注释定义它之后,没有覆盖 bar 属性的风险。多写一点,但这里有一个演示如何实现它:

interface DeclaredVars {
  bar?: boolean;
}

class Some implements DeclaredVars {

  constructor() {
    console.log((this as DeclaredVars).bar);
  }
}

const s: DeclaredVars = new Some();
console.log(s.bar);
s.bar = true;
console.log(s.bar);

现场演示

因此,您无需定义属性,但可以尝试访问它并稍后进行修改。类型声明是必需的。


推荐阅读