Javascript 我可以像flow一样使用可选的typescript吗?
我正在启动一个新的react redux项目,并考虑再次使用typescript。我尝试的上一个版本是1.6,但typescript从那时起就有了很大的发展 我做了一个很小的PoC,我喜欢javascript中静态类型的想法,但我不得不一直处理丢失或损坏的类型定义,这真的让我很烦。最新的示例是material ui中的一个断开的类型定义。我觉得我必须与编译器抗争,而不是它帮助我 所以我的想法是将es6与babel一起使用,并以一种可选的方式(如flow)添加typescript。我了解到typescript 2.3能够通过顶部的@ts check注释实现这一点 那么这两者是如何协同工作的呢?我需要一些babel插件来摆脱.js文件中的类型定义,还是必须使用.ts.tsx扩展名 或者这完全是胡说八道,我必须去“完整的打字脚本”模式,并且必须适应它 老实说,我有点不知所措 更新 Babel将在下一版本7.0中支持typescript。 一个测试版已经出来测试它了。 据我所知,你现在可以使用巴别塔作为传输和添加巴别塔预设打字脚本。 然后,您可以在监视模式下使用typescript,或者仅使用VS代码错误报告。Javascript 我可以像flow一样使用可选的typescript吗?,javascript,reactjs,typescript,babeljs,Javascript,Reactjs,Typescript,Babeljs,我正在启动一个新的react redux项目,并考虑再次使用typescript。我尝试的上一个版本是1.6,但typescript从那时起就有了很大的发展 我做了一个很小的PoC,我喜欢javascript中静态类型的想法,但我不得不一直处理丢失或损坏的类型定义,这真的让我很烦。最新的示例是material ui中的一个断开的类型定义。我觉得我必须与编译器抗争,而不是它帮助我 所以我的想法是将es6与babel一起使用,并以一种可选的方式(如flow)添加typescript。我了解到type
我想在不久的将来,这将是我最喜欢的堆栈。如果您安装了material-ui@next它有自己的类型,您不需要安装@types/material ui。如果你这样做了,他们会犯很多错误。然而@next目前beta.9当然正在积极开发中,出现了许多打字问题。我和其他人在每个版本上都会很快地提出问题,以确保项目的输入是健壮的 目前如果你使用beta.8,我没有任何打字问题。此外,如果您使用的是typescript,则不需要babel。Typescript编译器将根据您想要的任何规范构建您的项目 一旦你弄清楚它是如何构建的,Typescript就很容易了。跨过这一关后,剩下的就简单了 对我来说,我使用.ts/.tsx扩展名和本地安装的Typescript。这是我的Tsconfig示例
{
"extends": "./config/base.json",
"compilerOptions": {
"experimentalDecorators": true,
"lib": [
"es6",
"dom",
"es2015",
"es2017"
],
"typeRoots": [
"node_modules/@types",
"node_modules"
],
"types": [
"node", "jest", "lodash", "react",
"react-dom", "react-redux", "redux-logger", "material-ui",
"react-router-dom", "react-router-redux", "react-autosuggest",
"redux", "binary-type-tree", "redux-form",
"tedb", "react-tap-event-plugin", "redux-thunk",
"react-hot-loader", "history", "material-ui-icons"
],
"outDir": "dist"
},
"include": [
"src",
"node_modules/**/*.d.ts",
"node_modules/@types/**/*.d.ts"
],
"exclude": [
"node_modules",
"dist",
"spec",
"webpack"
]
}
基地呢
{
"compileOnSave": false,
"compilerOptions": {
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2015",
"module": "es2015",
"moduleResolution": "node",
"strict": true,
"pretty": true,
"jsx": "react",
"sourceMap": true,
"importHelpers": true,
"removeComments": false,
"noImplicitThis": true,
"noImplicitAny": true,
"noEmitOnError": true,
"strictNullChecks": true
}
}
我的一些类型需要列在的“类型”
中,我不确定这种情况是否仍然存在,但要求像这样列出所有类型。我希望这能有所帮助。package.json“main”
将指向“dist/index.js”
“构建”:“rm-rf./dist/*&&tsc”
和“类型”:“dist/index.d.ts”
这只是我的设置。但我希望它有助于解决一些问题。请参阅。在项目中创建一个tsconfig文件,并将@ts check注释添加到要键入check的.js文件中。VSCode将能够给出关于错误类型的警告,但它们不会破坏您的构建。这不是胡说八道。我个人更喜欢“完整的打字脚本”体验,但这绝对是一个品味问题,这里没有一个真正的答案。我的观点是相当主观的,但我认为如果你在构建过程中偏离常规,从长远来看,你会遇到更多的维护难题。我使用
create-react-app-typescript
,不必担心自己升级TS build。对于类型不一致的问题,我通常会亲自破解/修补.d.ts
文件,或者在我无法解决的情况下转换到任何
。我强烈怀疑,维持一个混合版本将是一个实时接收器…谢谢你的这些信息。我现在已经使用CreateReact应用程序typescript启动程序完成了完整的typescript部分,并且只添加了很棒的typescript加载程序来实现热重新加载。到目前为止,一切都很顺利。如果有什么事情真的开始困扰我,我总是有机会用ES6弹出,并用babel:)使用TS的输出。