javascript
и работает он с файлами .js
. Ни о каких .vue
он знать не знает. Нельзя просто написать module
и ожидать что оно само заработает. loader
'ы, которые собственно и творят всю магию. Когда ты пишешь import componentName from './components/template.vue'
сборщик находит в конфиге специальный loader
для .vue
и запускает его, тот обрабатывает файл и выдаёт в результате валидный js
, который уже в свою очередь и импортируется. Вне сборщиков, в чистом браузере, поддержки loader
'ов само собой (пока?) нет. interface CreatureBase {
type: string;
subtype: string;
params: unknown;
}
interface PeopleBase extends CreatureBase {
type: 'People';
}
interface PeopleChild extends PeopleBase {
subtype: 'child';
params: {
age: number;
school: string;
}
}
interface PeopleAdult extends PeopleBase {
subtype: 'adult';
params: {
height: number,
weight: number,
age: number
}
}
type Creature = PeopleChild | PeopleAdult; //...
const arr: Creature[] = [
{
type: 'People',
subtype: 'adult',
params: {
height: 1,
weight: 2,
age: 3
}
},
{
type: 'People',
subtype: 'child',
params: {
school: 'foo',
age: 3
}
},
{
type: 'People',
subtype: 'adult',
params: {
school: 'foo', // err
age: 3
}
}
]
as any
, или дважды кастанув в новый тип var as unknown as type
. Но не нужно.)