跳至主要内容

从 JS 开始

JS 到 TS 自动转换

用于 JSON - http://json2ts.com/ 从 JSON 生成 TypeScript 接口

JS 到 TS 手动转换

“仅重命名”策略

  • OSX/Linux:find src -name "*.js" -exec sh -c 'mv "$0" "${0%.js}.tsx"' {} \;

您可以使用 webpack 加载 TypeScript 文件,或者使用 tsc 编译器将您的 TS 文件编译成并排的 JS 文件。基本的 tsconfig.json

{
"compilerOptions": {
"allowJs": true
}
}

然后您需要启用它来检查 JS

{
"compilerOptions": {
"allowJs": true,
"checkJs": true
}
}

如果您有一个大型代码库并且这会一次性抛出太多错误,您可以使用 //@ts-nocheck 选择退出有问题的文件,或者关闭 checkJs 并向每个常规 JS 文件的顶部添加 //@ts-check 指令。

TypeScript 应该在这里抛出一些明显的错误,这些错误应该很容易修复。

完成后,通过关闭隐式 any 来服用红色药丸

{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"noImplicitAny": true // or "strict": true
}
}

这将引发大量类型错误,您可以开始将文件转换为 TS 或(可选)在您的 JS 中使用 JSDoc 注释

这里一个常见的做法是为 any 使用一个环境 TODO 类型别名,以便您可以跟踪需要返回的内容

type TODO_TYPEME = any;
export function myFunc(foo: TODO_TYPEME, bar: TODO_TYPEME): number {
// ...
}

逐渐添加 更多 strict 模式标志,例如 noImplicitThisstrictNullChecks 等,直到您最终可以在没有 js 文件的情况下以完全严格模式运行

{
"compilerOptions": {
"strict": true
}
}

三步过程

image

https://speakerdeck.com/amhinson/convert-a-react-native-project-to-typescript-in-10-minutes?slide=23

更多资源

可能过时的旧内容