gpt4 book ai didi

reactjs - React Native *.android.ts 和 *.ios.ts 模块的 Typescript 路径映射

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:41 24 4
gpt4 key购买 nike

我在 VSCode(版本 1.10.2)中为我的 React Native 项目使用 Typescript(版本 2.2.1),我试图让编译器映射 *.android.ts 和 *.ios.ts 路径使用说明:

https://github.com/Microsoft/TypeScript-Handbook/blob/release-2.0/pages/Module%20Resolution.md#path-mapping

例如:

import ApplicationTabs from './ApplicationTabs';

应该映射到

import ApplicationTabs from './ApplicationTabs/index.ios';

使用以下 tsconfig.json 设置

{
"compilerOptions": {
"paths": {
"*": ["*", "*.ios", "*.android"]
}
}
}

而是抛出编译器抛出错误“[ts] 找不到模块‘./ApplicationTabs’”

有谁知道如何让编译器正确映射到 *.android.ts 和 *.ios.ts 路径?

我的 tsconfig.json 是:

{
"compilerOptions": {
"target": "es6",
"module": "es6",
"moduleResolution": "node",
"jsx": "react",
"outDir": "build",
"rootDir": "src",
"removeComments": true,
"allowSyntheticDefaultImports": true,
"noImplicitAny": true,
"experimentalDecorators": true,
"preserveConstEnums": true,
"allowJs": true,
"inlineSourceMap": true,
"sourceRoot": "src",
"baseUrl": ".",
"paths": {
"*": [
"*",
"*.ios",
"*.android"
]
}
},
"filesGlob": [
"typings/**/*.d.ts",
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.tsx"
],
"exclude": [
"index.android.js",
"index.ios.js",
"build",
"node_modules"
],
"compileOnSave": false
}

谢谢:-)

最佳答案

您似乎遇到了此处报告的问题:https://github.com/Microsoft/TypeScript/issues/8328

根据问题(以及我在自己的项目中发现的问题),路径解析不适用于相对路径,就像您在上面的代码中所做的那样。您也不会在 .android.ios 文件之间进行类型检查,因此我一直在使用问题中讨论的其他方法:

./ApplicationTabs.d.ts

// This file exists for two purposes:
// 1. Ensure that both ios and android files present identical types to importers.
// 2. Allow consumers to import the module as if typescript understood react-native suffixes.
import DefaultIos from './ApplicationTabs.ios';
import * as ios from './ApplicationTabs.ios';
import DefaultAndroid from './ApplicationTabs.android';
import * as android from './ApplicationTabs.android';

declare var _test: typeof ios;
declare var _test: typeof android;

declare var _testDefault: typeof DefaultIos;
declare var _testDefault: typeof DefaultAndroid;

export * from './ApplicationTabs.ios';
export default DefaultIos;

关于reactjs - React Native *.android.ts 和 *.ios.ts 模块的 Typescript 路径映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com