https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#jsdoc-property-modifiers [[allowJS]]や[[checkJs]] の機能が強化された。 ## Accessibility modifiersの追加 `@public`、`@private`、`@protected`をつけることで、`public`、`private`、`protected`相応の効果がある。 `module.js` ```js export class Human { /** * @param {string} name * @param {number} age */ constructor(name, age) { this.name = name; /** @private */ this.age = age; } } ``` `main.ts` ```ts import { Human } from "./module"; const taro = new Human("taro", 100); console.log(taro.name); console.log(taro.age); // -> error TS2341: Property 'age' is private and only accessible within class 'Human'. ``` ## readonlyの追加 `@readonly`をつけるとreadonlyになる。 `module.js` ```js export class Human { /** * @param {string} name */ constructor(name) { /** @readonly */ this.name = name; } } ``` `main.ts` ```ts import { Human } from "./module"; const taro = new Human("taro"); console.log(taro.name); taro.name = "hogehoge"; // -> error TS2540: Cannot assign to 'name' because it is a read-only property. ```