我关注了博客文章,但这不起作用。这是我的承诺:https://github.com/Falieson/react15-meteor1.5/commit/b0c5ccd4f940d980a227789e151c9b1ffb8f71cf
错误
$ meteor
[[[[[ ~/Private/ReactMeteorExample ]]]]]
=> Started proxy.
client/index.tsx (2, 24): Cannot find module 'meteor/meteor'.
=> Started MongoDB.
=> Started your app.
安装
$ meteor add barbatus:typescript
$ meteor npm install --save @types/meteor @types/react
tsconfig.json
"compilerOptions": {
"allowJs": false,
"alwaysStrict": true,
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": false,
"sourceMap": true,
"strictNullChecks": false,
"target": "es5",
"types": [
"meteor-typings"
]
其他问题:类型应该是开发依赖项吗?
tsconfig 文件中的"types"
部分应该是不必要的,因为你没有 meteor-typings 目录('meteor-typings' 是一种古老的做事方式(。
由于@types
包只是.d.ts
文件,因此它们是标准依赖项还是开发依赖项无关紧要。就个人而言,我会将它们保留为非开发人员。
要解决您遇到的问题,请在顶层添加一个名为typings.d.ts
的文件,并在其中输入对要引用的包的引用,例如:
/// <reference types="@types/meteor" />
您可能需要添加 react 类型,或者由于 jsx = react 定义,它们可能会自动添加,但在我添加上述内容后,它似乎运行没有任何错误。
打字稿文档建议应该自动包含@types
文件,但我不知道为什么它们不。当我删除上面的"类型"时,它们没有被拾取。
另一种解决方案是在 tsconfig.json 文件中显式指定类型,例如:
...
"target": "es5",
"types": [ "meteor" ]
以下是 TS 文档的相关部分: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types 本节首先说"默认情况下,所有可见的"@types"包都包含在您的编译中",但继续解释如何在tsconfig.json
文件中配置"typeRoots"和"types"。