Typescript:将接口值作为类型进行自引用
我有一个函数,它将匹配接口的对象数组作为参数。该函数将生成一个具有属性、值字符串数组和定义转换的对象数组的有限状态机 我希望(如果可能的话)能够推断transitions数组上的'from'和'to'参数,作为Typescript:将接口值作为类型进行自引用,typescript,state-machine,typescript-generics,Typescript,State Machine,Typescript Generics,我有一个函数,它将匹配接口的对象数组作为参数。该函数将生成一个具有属性、值字符串数组和定义转换的对象数组的有限状态机 我希望(如果可能的话)能够推断transitions数组上的'from'和'to'参数,作为states属性(潜在状态数组)的文字并集。我当前的尝试仅将转换界面上的类型缩小为string和string[]。理想情况下,在下面的示例中,S应该是'one'|'two' interface Transition<S> { from: S, to: S[], } i
states
属性(潜在状态数组)的文字并集。我当前的尝试仅将转换
界面上的类型缩小为string
和string[]
。理想情况下,在下面的示例中,S
应该是'one'|'two'
interface Transition<S> {
from: S,
to: S[],
}
interface StateMachineDescriptor<T> {
property: string;
states: T[];
transitions: Array<Transition<this['states'][number]>>;
}
function fsm<T>(opts: Array<StateMachineDescriptor<T>>) {
return opts;
}
fsm([{
property: 'test',
states: ['one', 'two'],
transitions: [{
from: 'one',
to: ['foo'],
}]
}])
接口转换{
发件人:S,
致:S[],
}
接口状态机描述符{
属性:字符串;
国家:T[];
过渡:数组;
}
功能fsm(选项:阵列){
返回选项;
}
密克罗尼西亚联邦([{
属性:“测试”,
国家:[“一”、“二”],
过渡:[{
从"一",,
收件人:['foo'],
}]
}])
Typescript版本为3.7,此处有演示链接:
您能否将
功能fsm(…)
更改为功能fsm(…)
,看看是否符合您的所有用例?如果是的话,我会写下来的。如果没有,请详细说明您的用例,以说明哪些地方不适合您。祝你好运您能否将函数fsm(…)
更改为函数fsm(…)
,看看是否满足您的所有用例?如果是的话,我会写下来的。如果没有,请详细说明您的用例,以说明哪些地方不适合您。祝你好运