Expressのリクエストの本文(body-parserミドルウェアを使用)からインターフェイスにコードをキャストしようとしていますが、型の安全性を強制していません。
これは私のインターフェースです:
export interface IToDoDto {
description: string;
status: boolean;
};
これは私がキャストしようとしているコードです:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
そして最後に、呼び出されているサービスメソッド:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
インターフェイス定義との一致に近づかない引数も含めて、どのような引数でも渡すことができ、このコードは正常に機能します。応答本文からインターフェイスへのキャストが不可能な場合、JavaやC#のように実行時に例外がスローされると思います。
TypeScriptキャストには存在せず、Type Assertionのみが存在することを読みました。そのため、オブジェクトが型x
であることがコンパイラに通知されるだけなので、...間違っていますか?型安全性を実施および確保するための正しい方法は何ですか?