TypeScript интерфейс/тип - префикс, постфикс; interface/type - prefix, postfix;
Это вопрос-ответ для раздела faq.
Какие имена лучше давать интерфейсам в TypeScript?
Можно ли использовать префикс
I?
Почему в TypeScript рекомендуют именовать интерфейсы без префикса “i”?
Как выделить интерфейс без использования префикса?
Ответы (1 шт):
Автор решения: qwabra
небольшое уточнение:
→ Ссылка
Единообразие кода превыше всего.
Выбери любое правило и всегда следуй ему. (или узнай у команды)
Есть одно НО - declaration-merging (читай ниже).
Официальная позиция TS.
Именуй как классы, с заглавной буквы.
declaration-merging
например, чтобы interface, class и namespace объединились в одну сущность они должны иметь одно имя(а правило именования классов мы помним): play
interface SingleTon { qwa: string }
class SingleTon {
private constructor() { }
}
namespace SingleTon {
let instance: SingleTon | null = null
export const getInstance = (): SingleTon =>
instance
? instance
// @ts-ignore
: instance = new SingleTon
}
// -,-
const instance = SingleTon.getInstance()
instance.qwa
небольшое уточнение: class что есть instance type а что сonstructor.
interface Co { //instance
data: any
}
class Co { }
// -,-
type instance = Co
declare var instance: instance
instance.data
// -,-
type Constructor = typeof Co
declare var A: Constructor
const a = new A
Как выделить интерфейс без использования префикса?
Например, вынести в namespace:
class A {
data: A.I.data
}
namespace A.I {
export type data = Record<string, string>
}
// -,-
const instance = new A
const data: A.I.data = instance.data