Как ссылаться на значения массива из массива, определенного в интерфейсе?

#typescript

Вопрос:

Я новичок в машинописи. У меня определен следующий интерфейс:

 interface Cities {
    names: ["New York", "Chicago", "Los Angeles"]
    // rest of the parameters
}
 

Теперь у меня есть функция, которая принимает город параметров, которые должны быть только теми, которые определены в именах:

 const getPopulation = (name: Cities["names"]) => {
    // return population of city 'name'
}
 

Однако вышеизложенное будет/не работает, так Cities["names"] как является массивом. Я хочу ссылаться на значения массива (например, «Нью-Йорк» и т. Д.). Как бы я мог это сделать?

Комментарии:

1. Похоже, вместо этого вам следует использовать перечисление.

Ответ №1:

Я бы сделал

 enum City {
  NewYork="New York";
  Chicago="Chicago";
  LosAngeles="Los Angeles";
}
const getPopulation = (name: City): number => {
    // return population of city 'name'
}
 

Или вы можете сделать это

 type City = "New York" | "Chicago" | "Los Angeles"
const getPopulation = (name: City): number => {
    // return population of city 'name'
}
 

Пожалуйста, дайте мне знать, если это полезно. Я не совсем понял вопрос. Но я думаю, что вы пытаетесь заставить это имя быть не просто строкой, оно должно быть строкой внутри и группой параметров. Если вы можете предоставить более подробную информацию, было бы здорово помочь вам лучше!

Комментарии:

1. Я больше искал объединение значений массива, так Cities как интерфейс имеет больше параметров. Но это все равно было полезно знать enum . Спасибо!

Ответ №2:

Cities["names"] задает тип кортежа, который вы можете дополнительно преобразовать в union тип, используя Cities['names'][number] в качестве параметра функции:

 const getPopulation = (name: Cities["names"][number]) => {
    // return population of city 'name'
}
 

Смотрите детскую площадку