Что означает, что универсальный тип «Feature‹T›» требует 1 аргумента типа в Typescript?

Я пытаюсь использовать GeoJson в машинописном тексте, но компилятор выдает ошибку для этих двух переменных: Generic type 'Feature<T>' requires 1 type argument(s)

  const pos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [0, 1]
    }
  };

  const oldPos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [2, 4]
    }
  };

Что это должно означать?


person dagatsoin    schedule 22.04.2016    source источник
comment
Попробуйте ‹GeoJSON.Feature‹GeoJSON.Point››   -  person Corey Alix    schedule 22.04.2016


Ответы (1)


Для интерфейса Feature требуется параметр:

export interface Feature<T extends GeometryObject> extends GeoJsonObject
{
    geometry: T;
    properties: any;
    id?: string;
}

Попробуй это:

  const pos = <GeoJSON.Feature<GeoJSON.GeometryObject>>{
    "type": "Feature",
    "properties":{},
    "geometry": {
      "type": "Point",
      "coordinates": [0, 1]
    }
  };

И, возможно, введите вспомогательный тип и установите тип на pos вместо кастинга, это поможет вам убедиться, что вы установили необходимый атрибут «свойства»:

type GeoGeom = GeoJSON.Feature<GeoJSON.GeometryObject>;
const pos: GeoGeom = {
    type: "Feature",
    properties: "foo",
    geometry: {
        type: "Point",
        coordinates: [0, 1]
    }
};
person Corey Alix    schedule 22.04.2016
comment
извините за поздний ответ, но да, это действительно работает. Не могли бы вы добавить свойства: {} в блок кода после «Попробуйте это». Это недопустимо, свойство отсутствует. Спасибо! - person dagatsoin; 29.04.2016