#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'
}
Смотрите детскую площадку