Я только начинаю с Aurelia & Типичная документация, и я ищу советы по лучшим практикам. Вот базовый код, который в основном описывает список продуктов, разделенных на родительском products
зрения, которая состоит из детальных product-card
просмотров:Как объявить интерфейсы, которые используются несколькими моделями просмотров
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
}
];
}
продукт-карточка.html
<template>
Name: ${product.name}
Price: ${product.price}
</template>
продакт-card.ts
import {bindable} from 'aurelia-framework';
export class ProductCard {
@bindable product: Product;
}
Все эти файлы находятся в том же каталоге и интерфейс Product
, который используется в product.ts
& product-card.ts
так просто, как ...
export interface Product {
name: string;
price: number;
}
Это в основном работает, за исключением того факта, что ни products.ts
, ни product-card.ts
действительно знают интерфейс Product
с кодом выше.
Вот как я бы решить это:
- Создать специальный файл определения
product.d.ts
в той же папке, как и все другие файлы - Импорт файла определения в
products.ts
, а также вproduct-card.ts
с использованиемimport {Product} from './product';
Создает специальный файл определений для простого интерфейса, который разделяется несколькими видами моделей, считающимися хорошей/лучшей практикой, или есть какие-либо другие способы решить эту проблему? Также нормально положить *.d.ts
в ту же папку, что и источники, или это должно быть где-то еще?