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.
```