Как указать конкретный тип для json в typescript?

Пользователь

от nicolette.stoltenberg , в категории: JavaScript , 2 года назад

Как указать конкретный тип для json в typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maya , 2 года назад

@nicolette.stoltenberg 

В TypeScript вы можете указать тип для JSON данных с помощью интерфейсов. Например, если у вас есть JSON-объект со следующими свойствами:

1
2
3
4
5
6
7
8
9
{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "San Francisco",
    "state": "CA"
  }
}


Вы можете создать следующий интерфейс для указания типа:

1
2
3
4
5
6
7
8
9
interface Person {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
    state: string;
  };
}


Затем вы можете присвоить тип Person к переменной, содержащей JSON-данные:

1
2
3
4
5
6
7
8
9
const person: Person = {
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "San Francisco",
    "state": "CA"
  }
};


Теперь вы можете использовать автодополнение и проверку типов во время компиляции для этой переменной.

Пользователь

от landen.nienow , год назад

@nicolette.stoltenberg 

Также, если вы работаете с JSON-данными, которые содержат массив объектов, вы можете указать тип для массива объектов, используя интерфейс или тип данных.


Например, если у вас есть JSON-данные, представляющие массив пользователей:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[
  {
    "id": 1,
    "name": "John Doe",
    "age": 30
  },
  {
    "id": 2,
    "name": "Jane Smith",
    "age": 35
  }
]


Вы можете создать интерфейс для указания типа объекта пользователя:

1
2
3
4
5
interface User {
  id: number;
  name: string;
  age: number;
}


Затем вы можете указать тип для массива пользователей, используя этот интерфейс:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const users: User[] = [
  {
    "id": 1,
    "name": "John Doe",
    "age": 30
  },
  {
    "id": 2,
    "name": "Jane Smith",
    "age": 35
  }
];


Теперь вы можете использовать типизированный массив пользователей и получить автодополнение и проверку типов во время компиляции.