Typescript从实现中推断通用类型

Amo*_*pta 5 typescript typescript-typings

所以我正在做一个本机反应项目。我希望有人能从实现中推断出泛型类型。

type itemType<T> = { item: T };

const someItem = {
    item: 'Some String'
};

type someItemType = typeof someItem;
// So Here someItemType will be {item: string}, i want it to be itemType<string> and 
// in this example i have implemented itemType but in real use case i want to infer 
//it from the actual implementation  
Run Code Online (Sandbox Code Playgroud)

Tit*_*mir 4

目前 Typescript 不支持对变量进行部分推断。您唯一的选择是使用函数的推理行为:

type itemType<T> = { item: T };
const createItemType = <T>(o: itemType<T>) => o;

const someItem = createItemType({ //someItem is typed as itemType<string>
    item: 'Some String'
})
Run Code Online (Sandbox Code Playgroud)

请注意,在您的原始示例中键入 someItem 可能并不重要,因为{item: string},它仍然可以分配给itemType<string>,因为打字稿使用结构兼容性来确定可分配性。因此,如果结构兼容,则一切正常:

type itemType<T> = { item: T };

const someItem ={ 
    item: 'Some String'
}
const someOtherItem: itemType<string> = someItem // ok
Run Code Online (Sandbox Code Playgroud)