TypeScript-正确使用递归泛型



我正在尝试使用递归泛型,这样我就可以从编辑器中获得很多帮助。

这里有一个例子:

interface ServiceEndpointNode {
self: string;
context?: Record<string, ServiceEndpointNode>
}
const ServiceEndpoints: ServiceEndpointNode = {
self: 'BASE_URL',
context: {
songs: {
self: 'GET_SONGS',
context: {
getSong: {
self: 'GET_SONG',
},
getContributors: {
self: 'GET_CONTRIBUTORS',
}
}
}
}
}

这很好用,结构也很严格,但我没有得到编辑的帮助。例如,我需要帮助,如:

ServiceEndpoints.context.songs.context.getsong.self

但是,因为我只告诉键入上下文应该是一个字符串,所以我并没有真正收到关于可遍历对象的帮助。我想我需要包括一些泛型或其他东西,但不知道如何实现。:(

所以我想保持这种严格的结构,同时从编辑器那里获得所有可能的路线、密钥等的帮助。

现在您可以在TypeScript中使用可选链接,简化如下所示。因此,typescript编译器将期望NULL |未满

console.log(ServiceEndpoints.context?.songs.context?.getSong?.self);
// OUTPUT: "GET_SONG" 

最新更新