у меня есть этот фрагмент
class J {
constructor(public foo: number) {}
}
class B {
constructor(public bar: string) {}
}
interface Cache {
json?: J;
binary?: B;
}
function test(key: "json" | "binary", data: J | B, obj: Cache) {
obj[key] = data;
}
Если вы попробуете этот код в https://www.typescriptlang.org/play/, строка obj[key] = data;
имеет следующую ошибку
Введите 'J | B' нельзя присвоить типу 'J & B'. Тип «J» не может быть присвоен типу «J & B». Свойство bar отсутствует в типе J, но необходимо в типе B.
Явно чего-то не хватает, но не могу понять чего. Есть идеи?