Aurelia & Typescriptを使い始めたばかりで、ベストプラクティスに関するアドバイスを探しています。複数のビューモデルで使用されるインタフェースを宣言する方法
products.html
<template>
<require from="./product-card"></require>
// ...
<div repeat.for="product of products" class="product-cards">
<product-card product.bind="product"></product-card>
</div>
// ...
</template>
products.ts
export class Products {
public products: Product[] = [
{
name: 'Salt',
price: 10
},{
name: 'Orange Juice',
price: 12
}
];
}
:ここでは基本的に詳細な
product-card
ビューで構成され、親
products
ビューに分かれた製品のリストを記述する基本コードです
product-card.html
<template>
Name: ${product.name}
Price: ${product.price}
</template>
製品-card.ts
import {bindable} from 'aurelia-framework';
export class ProductCard {
@bindable product: Product;
}
すべてのそれらのファイルが同じディレクトリにあるとproduct.ts
& product-card.ts
に使用されているProduct
インタフェースは
export interface Product {
name: string;
price: number;
}
...と同じくらい簡単です
これは基本的には、products.ts
でもでもは、上記のコードと実際にはProduct
インターフェイスを認識しています。ここで
は、私はこの解決したと思います方法は次のとおりです。
- は、他のすべてのファイルと同じフォルダに専用の定義ファイル
product.d.ts
を作成し - インポート定義
products.ts
内のファイルだけでなく、product-card.ts
には、使用してimport {Product} from './product';
良い/ベストプラクティスと考えられる複数のビューモデルで共有される単純なインターフェイス用の専用定義ファイルを作成しています。これを解決する他の方法は?また、*.d.ts
をソースと同じフォルダ内に置くこともOKですか?これは別の場所にあるべきですか?