[英]Typescript how to create a nested interface objects using mapped types?
我想要的數據如下
paymentProviderByCountry = {
England: worldPay,
Spain: worldPay
}
如何為paymentProviderByCountryObj
創建接口,該接口以所需的動態格式集成了paymentProvidersList
和countryList
。
我猜我正在尋找的是如何遞歸創建obj
enum paymentProvidersList {
WorldPay,
Paypal,
}
enum countryListEnum {
England,
France,
Spain,
}
type T0 = { [key in paymentProvidersList]: string }; // This would work
/*
I want the values on paymentProviderByCountryObj to be dynamic based on the
enum values so that i can have an object that looks like this
paymentProviderByCountry = {
England: WorldPay,
Spain: Paypal,
France: WorldPay
}
*/
interface paymentProviderByCountryObj {
// This is the complex case, i cant get the index of the class to be dynamic and also its value
[key in countryListEnum] :string : { [key in paymentProvidersList]: string };
}
export interface sysConfigInterface {
paymentProviders: paymentProvidersList,
paymentProviderByCountry: paymentProviderByCountryObj,
minPaymentThreshold: String,
}
您正在尋找in
(以打字稿2.1引入的一部分映射類型 )
{ [key in countryList]: paymentProvidersList }
或者,如果您不想通過每個國家/地區:
{ [key in countryList]?: paymentProvidersList }
這才是最終目標
enum paymentProvidersList {
WorldPay,
Paypal,
}
enum countryListEnum {
England,
France,
Spain,
}
// Or Record<countryListEnum, paymentProvidersList>
type paymentProviderByCountryObj = { [k in countryListEnum]: paymentProvidersList }
const paymentProviderByCountry: paymentProviderByCountryObj = {
[countryListEnum.England]: paymentProvidersList.WorldPay,
[countryListEnum.France]: paymentProvidersList.WorldPay,
[countryListEnum.Spain]: paymentProvidersList.Paypal
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.