TypeScriptで必要なデータだけ代入して表示

Angularに限った話ではないかもしれないですが、

定義された独自クラスのインスンタンス変数に必要なデータだけ代入してテンプレートで表示したい時のやり方について。よくやるので書きます。

hoge.model.ts
export class Hoge { id: string; name: string; dateCreated: Date; fuga: Fuga; }

このようなモデルが定義されていて、Hoge型のnameプロパティのみ入ったデータを配列で用意してテンプレートで表示させたい時、

test.component.ts
import { Hoge } from './hoge.model.ts'; @component({ selector: 'app-test', styleUrl: './test.component.scss', templateUrl: './test.component.html' }) export class TestComponent { readonly hoges: Hoge[] = [ { name: 'sato' }, { name: 'taro' }, { name: 'jiro' } ] as Hoge[]; }

このように記述して表示できます。本来iddateCreatedなど定義されているデータを代入しないとエラーがでますが、as Hoge[]とすることで型情報の上書きが行われエラー回避できます。

test.component.html
<div *ngFor="let hoge of hoges"> {{ hoge.name }} </div>

関連記事

https://tips.weseek.co.jp/%E7%94%A8%E8%AA%9E%E9%9B%86/Javascript/Angular/ngFor%E3%81%A7%E6%8C%87%E5%AE%9A%E5%9B%9E%E6%95%B0%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%99