【发布时间】:2021-01-12 01:46:30
【问题描述】:
我正在尝试TypeScript 4.1 版本中的新Template Literal Types 功能,并希望创建一个接受字符串文字 参数的函数,该参数随后用于声明返回类型对象的属性.
作为一个实验,我正在尝试围绕 React 的 useState 函数创建一个小包装器,但无法让它工作。
这是我尝试过的:
function useNamedState<TValue>(name: string, initialValue: TValue): {
[typeof name]: TValue;
[`set${Capitalize<typeof name>}`]: (newValue: TValue) => void;
} {
const [value, setValue] = useState(initialValue);
return {
[name]: value,
[`set${capitalize(name)}`]: newValue => setValue(newValue),
};
}
我不确定这里应该使用什么正确的语法。我想实现以下API:
const {apples, setApples} = useNamedState<number|null>('apples', null);
我怎样才能让它工作?
【问题讨论】:
标签: typescript