Хорошо, во-первых, TypeScript довольно нов для меня, я долгое время C # ist, но мне нравится то, что я могу быстро взломать в Node / TypeScript - у меня есть проблема с синтаксисом (я думаю), у меня есть интерфейс, который реализуется двумя конкретными классами и третьим модулем, который экспортирует один из этих конкретных классов на основе конфигурации: ie
fruit.ts
export interface Fruit {
eat();
}
apple.ts
export class Apple implements Fruit {
eat() { console.log('Eat apple'); }
}
banana.ts
export class Banana implements Fruit {
eat() { console.log('Eat banana'); }
}
завтрак.ts
import { Fruit } from 'fruit';
import { Apple } from 'apple';
import { Banana } from 'banana;
const BreakfastType: typeof Fruit = config.appleForBreakfast ? Apple : Banana; <-- Error
export { BreakfastType }
Похоже, это должно сработать для меня, Apple и Banana - это "виды фруктов", поэтому объявление BreakfastType как "typeof Fruit", я думаю, имеет смысл, но TypeScript жалуется на
Fruit относится только к типу, но используется здесь как значение
Это явно надуманный пример, но он точно соответствует тому, что я пытаюсь сделать, я хочу, чтобы другой код был
import { BreakfastType } from 'breakfast';
let breakfastFood = new BreakfastType(); <-- create Apple or Banana based on config
Любые предложения высоко ценится