温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Requesting help to understand & how to initiate a typescript array of a class

其他 - 请求帮助以了解&如何启动类的打字稿数组

发布于 2020-04-03 23:32:39

我将其分解为MapComponent和GeoPoint类这两个项目。我在这里想念什么?

MapComponent

  • 这两种方法是否都是创建我制作的类的数组的正确方法,所以它不是未定义的?
  • 如果没有,正确的方法是什么?
    // Initiate
    const response: Array<LatLngExpression> = []; // Seems to work
    const response: [LatLngExpression] = [];      // Msg: Type any[] is not assignable to type [any]
    // Add a value to the array
    response.push(geoPoint.getLatLng());

GeoPoint

export clas GeoPoint {
  private _id: string;
  private _value: LatLngExpression; // This is a leaflet.LatLngExpression
  private _selected: boolean = false;

  constructor (id: string, latLng:LatLngExpression, selected?:boolean) {
    this._id = id;
    this._value = latLng;
    if(selected){
      this._selected = selected;
    }
  }

  set()... // you get the idea
  get()... // you get the idea
}

查看更多

提问者
Elijah
被浏览
13
T.J. Crowder 2020-01-31 00:33

您的“似乎可以工作”是正确的:

const response: Array<LatLngExpression> = [];

您也可以这样写:

const response: LatLngExpression[] = [];

LatLngExpression[]是的类型response

《手册》的“ 基本类型”>“数组”部分对此进行了介绍


在许多情况下,您也可以完全不使用类型,并允许TypeScript进行推断。但是,如果您从一个空数组开始,那实际上比提供类型注释要尴尬得多,因为您必须提供一个类型断言。因此,它可能不是您想要的,而仅仅是为了完整性:

// I probably wouldn't do it this way
const response = [] as LatLngExpression[];

发布
问题

分享
好友

手机
浏览

扫码手机浏览