例如我定义了一个对象
interface IUser {
name: string
age: number
hobby: {
name: string
durationTime: string
reason: string
}
}
定义个一个函数,返回的类型是 hobby 类型,如果不把 hobby 提取出去单独声明,有没有方法可以实现代码
const getHobby = (params: {userId: number}): Promise<IUser.hobby> {
const user = await api.getUserById(...)
return user.hobby
}
以上部分的 Promise<IUser.hobby>
应该替换成什么?
1
liuw666 2023-02-23 23:33:45 +08:00 via iPhone
IUser[‘hobby’]
|
2
drydiy 2023-02-24 08:18:30 +08:00 via iPhone
建议官网系统的学习一遍吧。这么简单的问题你都要问,一是这种问答效率太低,二是说明你基础不好。
|
3
reoah2 2023-02-24 09:06:34 +08:00
generate by chatgpt:
您可以使用下面的语法来定义函数返回接口中的属性类型: typescript Copy code const getHobby = (params: {userId: number}): Promise<IUser['hobby']> => { const user = await api.getUserById(...) return user.hobby } 在这里,我们使用了 TypeScript 中的索引类型查询操作符 ['hobby'] 来获取 IUser 接口中 hobby 属性的类型。 将 Promise<IUser.hobby> 替换为 Promise<IUser['hobby']> 即可。 请注意,在实际代码中,如果需要多次使用 IUser['hobby'] 类型,建议将其提取为一个类型别名,如下所示: typescript Copy code type UserHobby = IUser['hobby']; const getHobby = (params: {userId: number}): Promise<UserHobby> => { const user = await api.getUserById(...) return user.hobby } 这样可以提高代码的可读性和可维护性。 |
4
17681880207 OP @drydiy
问个简单的问题就能下这么多定义哇? |