Я хочу описать следующую форму объекта в машинописном тексте, но я хочу игнорировать типы полей.Опишите только форму объекта в машинописном тексте, но игнорируйте типы
interface TestInterface {
TestOne?: string;
TestTwo?: number;
TestThree?: boolean;
}
Моя идея состояла в том, чтобы описать это следующим образом:
type Shape = { [fieldName: string]: any };
type ShapeType<TShape extends Shape> = TShape;
var test: ShapeType<TestInterface> = {
TestThree: "asdf",
}
Он должен жаловаться на что-то вроде:
var test: ShapeType<TestInterface> = {
TestThree: "asdf",
TestFour: "123",
}
Если я типаж "ASDF" любому он работает. Есть ли способ описать это так, чтобы кастинг не нужен?
Редакция: Идея заключается в том, чтобы иметь форму, которая обычно используется для обмена данными, но при особых случаях она будет использоваться для метаданных. В тех случаях я забочусь только о структуре, но не о типе (по крайней мере на данный момент - идея состоит в том, чтобы изменить типы фигуры на другой заданный тип).
Относительно причины: Обычно форма должна использоваться для обмена данными, но я также хотел бы поместить метаданные в эти поля. Поэтому я хотел бы снова использовать форму. – Eggi
У решения, похоже, есть проблема, что он позволяет добавлять новые поля, такие как «TestFour», без жалоб. – Eggi