TS2322:类型 'T' 不可分配给类型 'never'
TS2322: Type 'T' is not assignable to type 'never'
我正在将一些 JS 移植到 TS,并且有一个简单的应用程序状态模块,它允许我设置一个 属性 以供以后检索。当ts编译器到达setAppState
函数内部的state[propertyName] = value;
行时,抛出如下错误
TS2322: Type 'T' is not assignable to type 'never'.
我搜索了这个错误,但 none 的其他答案似乎解决了我正在使用括号表示法设置对象 属性 的这种情况。
这是我的代码...
export interface appState {
context: typeof cast.framework.CastReceiverContext,
senderId: string,
requestId: number,
sessionId: string,
}
const state: appState = {
context: null,
senderId: null,
requestId: null,
sessionId: null,
};
export const getAppState = (propertyName: keyof appState): keyof appState => {
return state[propertyName];
};
export const setAppState = <T>(propertyName: keyof appState, value: T): void => {
state[propertyName] = value;
};
我发现了另一个问题 ,它显示了在泛型 getter 和 setter 的函数签名中编写类型的正确方法,从而解决了问题。现在编译以下内容。
export const getAppState = <K extends keyof appState>(propertyName: K): appState[K] => {
return state[propertyName];
};
export const setAppState = <K extends keyof appState>(propertyName: K, value: appState[K]): void => {
state[propertyName] = value;
};
我正在将一些 JS 移植到 TS,并且有一个简单的应用程序状态模块,它允许我设置一个 属性 以供以后检索。当ts编译器到达setAppState
函数内部的state[propertyName] = value;
行时,抛出如下错误
TS2322: Type 'T' is not assignable to type 'never'.
我搜索了这个错误,但 none 的其他答案似乎解决了我正在使用括号表示法设置对象 属性 的这种情况。
这是我的代码...
export interface appState {
context: typeof cast.framework.CastReceiverContext,
senderId: string,
requestId: number,
sessionId: string,
}
const state: appState = {
context: null,
senderId: null,
requestId: null,
sessionId: null,
};
export const getAppState = (propertyName: keyof appState): keyof appState => {
return state[propertyName];
};
export const setAppState = <T>(propertyName: keyof appState, value: T): void => {
state[propertyName] = value;
};
我发现了另一个问题
export const getAppState = <K extends keyof appState>(propertyName: K): appState[K] => {
return state[propertyName];
};
export const setAppState = <K extends keyof appState>(propertyName: K, value: appState[K]): void => {
state[propertyName] = value;
};