Для показывая линию на карте, я получаю много данных с координатами от службы REST:Могу ли я поместить интерфейс объекта в массив в TypScript?
{
"name": "line1"
"route": [["2015-03-26T23:29:57",-0.9,-81.8],["2015-03-26T23:34:58",-0.9,-81.8],["2015-03-26T23:39:59",-0.8,-81.8],...]
}
Из-за многочисленных данных в формате JSON Я использую массив (с Timestamp, широта, долгота), а объект, потому что тогда я бы удвоил размер ответа (из-за повторения имен свойств).
У меня есть интерфейс:
export interface ILine {
name: string
route: IWaypoint[]
}
Теперь я хотел бы назвать:
public handleResponse(line: ILine) {
for (var i in line.route) {
var waypoint = line.route[i];
var timestamp: string = waypoint.timestamp;
var lat: number = waypoint.latitude;
var lon: number = waypoint.longitude;
}
}
Но это возможно? Как реализовать интерфейс IWaypoint?
Это работает для безопасности типов, но я до сих пор не могу использовать имена свойств:
export interface IWaypoint extends Array<Date | number> {
0: Date
1: number
2: number
}
Я до сих пор помню, что широта находится в положении 1.
При использовании «константы» (var или enum) для индекса, TypScript не может определить тип.
const wpLatitude = 1;
var lat: number = waypoint[wpLatitude]; // <- error: Argument of type 'number | Date' is not assignable to parameter of type 'number'
enum WaypointIndex {
TIMESTAMP,
LATITUDE,
LONGITUDE
}
var lat: number = waypoint[WaypointIndex.LATITUDE]; // <- error