169 похожих чатов

Есть ли способ заполнить интерфейс на основе сериализуемого объекта или

другого интерфейса? копал в сторону 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
}

5 ответов

7 просмотров

https://www.typescriptlang.org/play?#code/MYewdgzgLgBBCmAnAlgQwDbIF7wCYHkAjAKxgF4YBvAKBhlQC4YAiVZgGlpkKYEZO6wJlEQBXeNQC+AbmrUoATwAO8GAGUkaTDlwBJMFCQAzVMFUVFKkEbiaM2PEWKzqAegBU72u5iAyEECsIIDcIP6ATCCAfCCAnCAwgBwggLwggEIg-oACIIAiIP4RgIIg3jDIBsamqgBiuRhU2fRM0ChgAObSdOU8MGCiALaESLIwPjBC3CAg6PCoYF0+kt6ucrmGiCZmMMVgpfAAHoZguBDqdtp4+rPz8DQNE3KgkLAAgkxLpRSUjADkvABMT+w8-L3CYvCSQA

Maksim- Автор вопроса

не, не экстендить, а именно заполнить

не совсем понятно тогда, что значит заполнить

Maksim- Автор вопроса

возможно, неправильно подобрал аналогию. например, в 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, я хочу попытаться сделать уже на основе сериализуемого объекта темы

Maksim- Автор вопроса

а хотя да, можно просто заэкстендить, смутило замечание линта пустом интерфейсе import "styled-components"; import { defaultTheme } from "common/theme"; type Theme = typeof defaultTheme; declare module "styled-components" { export interface DefaultTheme extends Theme {} }

Похожие вопросы

Обсуждают сегодня

кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
11
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта