Я решил это так, используя Angular 5.2.6 и TypeScript 2.6.2:
class Range implements Iterable<number> {
constructor(
public readonly low: number,
public readonly high: number,
public readonly step: number = 1
) {
}
*[Symbol.iterator]() {
for (let x = this.low; x <= this.high; x += this.step) {
yield x;
}
}
}
function range(low: number, high: number) {
return new Range(low, high);
}
Он может использоваться в Компонента следующим образом:
@Component({
template: `<div *ngFor="let i of r">{{ i }}</div>`
})
class RangeTestComponent {
public r = range(10, 20);
}
Ошибка проверки и утверждения для краткости опущены (например, что происходит, если шаг отрицательный).
А именно, относительно ключей: Я категорически не согласен со странной идеей, что ключи должны быть без значения. В целом я считаю базу данных набором фактов; как только Вы начинаете добавлять произвольные числа (как сгенерированные ключи) и другая несоответствующая информация в него, это должен быть предупредительный знак. Я рекомендую этот articly Joe Celko для больше на ключах.
более общие сведения:
Предложения для проектов/моделей данных схемы для различных компаний: David C. Hay: Шаблоны Модели данных: Соглашения Довольно старой Мысли, но существуют причина, почему это находится все еще в печати
http://www.dorsethouse.com/books/dmp.html
, Возможно, не очень подобно шаблону, но все еще очень хорошо: Stephane Faroult, Peter Robson: Искусство SQL http://oreilly.com/catalog/9780596008949/
Другой, который я могу рекомендовать: Vadim Tropashko: Шаблоны разработки SQL - Экспертное руководство к Программированию SQL http://www.rampant-books.com/book_2006_1_sql_coding_styles.htm
Систематический учебник о моделировании данных: Graeme Simsion & Graham Witt, "Основы Моделирования данных" http://www.elsevierdirect.com/product.jsp?isbn=9780126445510
, Возможно, Вы на самом деле ищете "руководство по стилю"?. Я, что случай: Joe Celko: Стиль программирования SQL http://www.elsevierdirect.com/product.jsp?isbn=9780120887972
Книги E.F. Codd и C.J. Дата является самыми очевидными ответами. Я не прочитал эту конкретную книгу, но я знаком с авторами, это, вероятно, довольно хорошо.
Прикладной Mathmatics для Профессионалов Базы данных Lexx de Haan и Toon Koppelaars.
На самом деле я думаю, что эмпирическое правило должно обычно использовать естественный ключ, а не суррогат, когда это возможно...
Поэтому, если у меня есть, например, таблица Invoice и таблица InvoiceDetail, мы можем, вероятно, использовать InvoiceNumber в качестве нашего первичного ключа на первом. Это уже существует в наших данных и (я принимаю?) было бы уникально. Для второй таблицы мы, вероятно, собираемся быть застрявшей необходимостью в суррогатном ключе, однако - соединено ли это с Номером счета-фактуры как составной объект или нет.
В любом случае, назад к исходному вопросу... ссылка hometoast должна запустить Вас.
- Kevin Fairchild
Ответить точно: да . Существуют s*-tons информации, записанной на 'хорошем' проектировании баз данных. Хотя Ваше эмпирическое правило в качестве примера, конечно, сомнительно.
Используя первичные ключи с бизнесом, означающим ("естественные ключи"), конечно, имеет его достоинства, но он может сделать рефакторинг Вашей базы данных очень трудным. Соблюдите осторожность, особенно если существует какая-либо причина полагать, что структура базы данных будет изменяться со временем.