我正在尝试使用通过create-react-app和Typescript模板创建的项目来处理Auth0示例应用程序。
我找到了一个通过react-auth0-spa.tsx(https://github.com/auth0/auth0-spa-js/issues/39)吸引我的示例。但是,当我尝试创建NavBar.tsx时,似乎无法理解useAuth0()调用返回的类型。我是Typescript的比较轻量级的人,但这似乎是因为类型被声明为可为空,尽管这是一个猜测。
这是react-auth0-spa.tsx的导出文件:
这是VSCode向我显示的错误:
但是isAuthenticated绝对在接口上,这使我认为可空声明是我的问题的一部分:
如果我将类型声明更改为'any',则可以,但这显然是错误的答案。使用Typescript的全部目的是为了进行静态键入。
我还发现了https://github.com/tommedema/startup-boilerplate/blob/master/packages/react-app/src/components/LoginView.tsx,这似乎暗示这应该可行。我检查了tsconfig.json和其他一些文件,看是否我可以使用不同的编译器选项,但还没有发现吸烟枪。
我在这里想念什么?
谢谢。
答案 0 :(得分:1)
我的怀疑似乎是对的。在创建useAuth0 lambda的调用中,我缺少尾随的非null断言运算符。
这是什么:
export const useAuth0 = () => useContext(Auth0Context);
需要这样:
export const useAuth0 = () => useContext(Auth0Context)!;