другого интерфейса? копал в сторону spread операций, но все только на уровне предложений
типа такого
https://tinyurl.com/y2jae8vg
const serializedObj = {
a: "a",
b: 1,
c: true
};
type SerializedInterface = typeof serializedObj;
/**
* Целевой интерфейс
* interface Final {
* a: string;
* b: number;
* c: boolean;
* }
*/
interface Final {
...SerializedInterface
}
https://www.typescriptlang.org/play?#code/MYewdgzgLgBBCmAnAlgQwDbIF7wCYHkAjAKxgF4YBvAKBhlQC4YAiVZgGlpkKYEZO6wJlEQBXeNQC+AbmrUoATwAO8GAGUkaTDlwBJMFCQAzVMFUVFKkEbiaM2PEWKzqAegBU72u5iAyEECsIIDcIP6ATCCAfCCAnCAwgBwggLwggEIg-oACIIAiIP4RgIIg3jDIBsamqgBiuRhU2fRM0ChgAObSdOU8MGCiALaESLIwPjBC3CAg6PCoYF0+kt6ucrmGiCZmMMVgpfAAHoZguBDqdtp4+rPz8DQNE3KgkLAAgkxLpRSUjADkvABMT+w8-L3CYvCSQA
не, не экстендить, а именно заполнить
не совсем понятно тогда, что значит заполнить
возможно, неправильно подобрал аналогию. например, в js используется spread операция для копирования объекта внутрь другого объекта const a = { a: 1, b: "2"} const b = { ...a } , вот с похожим предложением ишью ts есть https://github.com/microsoft/TypeScript/issues/32689 для чего нужно - в styled-components есть возможность расширить DefaultTheme интерфейс https://styled-components.com/docs/api#create-a-declarations-file, я хочу попытаться сделать уже на основе сериализуемого объекта темы
а хотя да, можно просто заэкстендить, смутило замечание линта пустом интерфейсе import "styled-components"; import { defaultTheme } from "common/theme"; type Theme = typeof defaultTheme; declare module "styled-components" { export interface DefaultTheme extends Theme {} }
Обсуждают сегодня