首页 > 解决方案 > 具有通用参数类型的接口树

问题描述

我正在为带有泛型类型参数的接口树的一些类型定义而苦苦挣扎。基本上,假设我有以下界面:

interface Foo<S> {
   state: S
   fn: (state: S) => void
}

interface FooTree {
  [key: string]: Foo<any>
}

const tree: FooTree = { bar: { state: { something: 3, fn: (state) => {} } } }

我想要的是根据实际状态对象值键入 fn 方法的 state 参数。这甚至可能吗?目前,我只得到未知/任何

标签: typescriptgenericsinterfacetree

解决方案


这是否符合您的要求:

interface Foo<S> {
    state: S
    fn: (state: S) => void
}

interface FooTree {
    [key: string]: Foo<{ age: number }>
}

const tree: FooTree = { bar: { state: { age: 42 }, fn: (state) => { } } }

操场


推荐阅读