У меня есть функция, в которой я хочу запросить данные из объекта данных, структурированного интерфейсом. Эта функция должна разрешать данные свойства из объекта данных. Это работает, если у меня есть тип возвращаемого значения, однако должен быть лучший подход, когда тип возвращаемого значения будет типом свойства.
Вот мой подход: Кодирование
Там я получаю только тип объединения всех свойств интерфейса, однако я должен вернуть тип свойства, которое я хочу вернуть.
привет, я не совсем уверен, что вы имеете в виду, не могли бы вы объяснить подробнее? Я нажал на ссылку, по крайней мере для меня она перенаправляет на тот же код.
Игровая площадка Typescript сохраняет последний код, который вы написали на сайте. Вы видите правильный код, потому что это был последний фрагмент кода, который вы написали, но больше никто этого не видит, поскольку ваша ссылка не экспортируется правильно.
Хорошо, я изменил его, теперь вы должны увидеть правильный код.
Вы должны сделать getData
универсальным, а затем повторно использовать универсальный тип как для аргумента, так и для возвращаемого значения:
interface Rofl {
name:string,
id:number,
}
const data: Rofl = {
name:"lol",
id:1,
};
function getData<T extends keyof Rofl>(property: T): Rofl[T] {
return data[property];
}
const lol:string = getData("name");
это именно то, что я искал! спасибо :)
Вы должны использовать ту же технику, что и на игровой площадке для машинописного текста: универсальный, который расширяет
keyof
. Кстати, есть шанс, что вы разместили неправильную ссылку на площадку: она не имеет ничего общего с вашим кодом.