Typescript 类型脚本:一个类型可以在它自己的键上参数化吗?
我想创建一个类型,其中的值是对其自身属性的引用。大致如下:Typescript 类型脚本:一个类型可以在它自己的键上参数化吗?,typescript,Typescript,我想创建一个类型,其中的值是对其自身属性的引用。大致如下: type T = {[k:string]: keyof *a reference to this type*}; // 这样你就可以写这样的东西: const t:T = { a:"b", // valid b:"a", // valid c:"d" // invalid since "d" is not a property of t }; 在不分解类型或预先明确指定属性的情况下,这是可能的吗?没有具体的类型T有这样
type T = {[k:string]: keyof *a reference to this type*}; //
这样你就可以写这样的东西:
const t:T = {
a:"b", // valid
b:"a", // valid
c:"d" // invalid since "d" is not a property of t
};
在不分解类型或预先明确指定属性的情况下,这是可能的吗?没有具体的类型T
有这样的定义,但您可以将T
表示为。这意味着您不需要像const t:t=…
那样进行注释,而是希望使用一个通用的helper函数,并像const t=asT(…)
那样调用它。像这样:
const asT = <T extends Record<keyof T, keyof T>>(t: T) => t;
const t = asT({
a: "b",
b: "a",
c: "d" // error! // "d" not assignable to "a"|"b"|"c"
});
const asT=(t:t)=>t;
常数t=asT({
a:“b”,
b:“a”,
c:“d”//error!//“d”不可分配给“a”|“b”|“c”
});
这会使您准确地得到预期的错误。好吧,希望这会有帮助;祝你好运