我正在做一个reacttypescript的项目,我很难弄清楚为什么会发生这个错误,基本上,我不能使用我在互联网上找到的createContext个例子.

import * as React from "react";

export function createCtx<A>(defaultValue: A) {
type UpdateType = React.Dispatch<React.SetStateAction<typeof defaultValue>>;
const defaultUpdate: UpdateType = () => defaultValue;
const ctx = React.createContext({
    state: defaultValue,
    update: defaultUpdate
});
function Provider(props: React.PropsWithChildren<{}>) {
    const [state, update] = React.useState(defaultValue);
    return <ctx.Provider value={{ state, update }} {...props} />;
}
return [ctx, Provider] as [typeof ctx, typeof Provider];
}

问题是每次它说有这个错误

        return <ctx.Provider value={{ state, update }} {...props} />;

我还是不明白为什么,有人能看出我是不是做错了什么?这是我的tConfig.json:

{
"compilerOptions": {
"target": "es5",
"lib": [
  "dom",
  "dom.iterable",
  "esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",
"noImplicitAny": false,
"strictNullChecks": false
},
"include": [
"src"
]
}

任何帮助都将不胜感激!

推荐答案

你的文件扩展名很可能是.ts而不是.tsx.

因此,TypeScript将<ctx.Provider解释为强制转换,并try 在命名空间ctx中找到类型Provider.

Typescript相关问答推荐

如何获取数组所有可能的索引作为数字联合类型?

如何基于对象关键字派生类型?

VS代码1.88.0中未出现自动导入建议

TypeScript泛型参数抛出错误—?&#"' 39;预期"

如何为父类构造函数中的修饰属性赋值?

类型脚本中没有接口的中间静态类

ANGLE找不到辅助‘路由出口’的路由路径

仅针对某些状态代码重试HTTP请求

在另一个类型的函数中,编译器不会推断模板文字类型

如何使所有可选字段在打印脚本中都是必填字段,但不能多或少?

MatTool提示在角垫工作台中不起作用

通过泛型函数本身推断受约束的泛型参数的类型脚本问题

如果判断空值,则基本类型Gaurd不起作用

如何在本地存储中声明该类型?

埃斯林特警告危险使用&as";

如何创建一个将嵌套类属性的点表示法生成为字符串文字的类型?

内联类型断言的工作原理类似于TypeScrip中的断言函数?

为什么 TypeScript 类型条件会影响其分支的结果?

基于可选参数的动态类型泛型类型

类型string不可分配给类型string| 联盟| 的'