#javascript #typescript
#javascript #typescript
Вопрос:
Мне было интересно, есть ли в typescript функция безымянных свойств или ее можно достичь. Например, у меня есть объект класса T.
class T {
Key:any;
Value:any;
}
Я могу использовать другую функцию, которая принимает массив объектов T и анализирует их в объект FormData. Шаблона нет, и поэтому всякий раз, когда я вызываю функцию, мне приходится вводить ключ и значение в каждый объект
let array = [
{Key:"id",Value: "2"},
{Key:"email",Value: "generic"},
{Key:"type",Value:"Food"},
{Key:"name",Value: "someName"}
.......
];
Это выглядело бы намного чище и было бы более эффективным, если бы я мог просто ввести два строковых значения следующим образом
let array = [
{"id","2"},
{"email","generic"},
{"type","Food"},
{"name","someName"}
.......
];
Может ли это быть достигнуто в typescript / javascript, если да, то как?
Комментарии:
1. Вы могли бы использовать
.map()
для добавления имен свойств.2. Это не ответ на typescript, но функция
map
array позволяет преобразовывать каждый элемент массива во что-то другое. Вы можете использовать свой ванильный массив в качестве входных данных и выводить массив объектов пары ключ / значение.3. Да, typescript / javascript не имеет значения. пожалуйста, дайте ссылку?
4. Я проверяю карты, но мне все равно пришлось бы сделать что-то вроде этого var x: Map<any, any> = новая карта<any, any>(); x.set(«id», «2»);
5. Было бы полезно посмотреть вашу функцию и то, как вы получаете входные данные массива. Я говорил не об объекте Map, а скорее об Array.prototype.map() . Второй пример является обратным тому, что вы хотите сделать.
Ответ №1:
Для достижения этой цели вы можете использовать типы кортежей и Array.map.
let content = [
["id","2"],
["email","generic"],
["type","Food"],
["name","someName"]
];
let finalArray = content.map(([Key, Value]) => ({Key, Value}));
Преимущество использования типа кортежа здесь заключается в том, что если ваша спецификация содержимого содержит менее двух элементов в строке, это вызовет ошибку компиляции.
Обратите внимание, что в .map
вызове я использую функции деструктурирования и определения полей в typescript.
Комментарии:
1. Я пытался включить ссылки на документацию для всего, но, похоже, нигде не могу найти документацию для каламбура o_O. Может быть, мне стоит написать что-нибудь… В любом случае, он компилируется просто отлично.