Javascript 在baseDir导入时导出对象时类型丢失
我有一个名为Javascript 在baseDir导入时导出对象时类型丢失,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有一个名为constants.ts的文件,其中包含与React-TypeScript应用程序相关的常量 该文件如下所示: //错误严重时的错误。 const BAD\u ERROR\u ERROR=“发生了不应该发生的事情。请联系管理员”; 常数={ 答复:{ 账户:{ 登录:{ 未验证的帐户:{ 信息:“您需要验证您的电子邮件”, problemFields:[“电子邮件”] }, 错误登录:{ 信息:“您的电子邮件或密码不正确”, 问题字段:[“电子邮件”、“密码”] }, 默认值:{ 消
constants.ts
的文件,其中包含与React-TypeScript应用程序相关的常量
该文件如下所示:
//错误严重时的错误。
const BAD\u ERROR\u ERROR=“发生了不应该发生的事情。请联系管理员”;
常数={
答复:{
账户:{
登录:{
未验证的帐户:{
信息:“您需要验证您的电子邮件”,
problemFields:[“电子邮件”]
},
错误登录:{
信息:“您的电子邮件或密码不正确”,
问题字段:[“电子邮件”、“密码”]
},
默认值:{
消息:错误\u错误\u错误,
problemFields:[“电子邮件”、“密码”]
}
}
}
}
};
导出默认常量;
然后我将其导入TSX文件,如下所示:
从“常量”导入常量;
并引用如下键:
const{status}=json;
const resp=Constants.APIResponses.accounts.login[status.message];
但是,当我尝试使用它时,我会出现以下错误:
属性“APIResponses”不存在于类型“typeof import”(“constants”)上。TS2339
69 |
70 | const{status}=json;
>71 | const resp=Constants.APIResponses.accounts.login[status.message];
此错误仅在从my baseDir以“常量”
的形式导入时发生。/../constants可以正常工作。(这就是我现在要做的工作)
以下是我尝试过但没有成功的方法:
- 在Constants.ts中显式定义常量的类型
- 将其重命名为constants.js
- 在默认导出上强制转换类型
- 不将其导出为默认值
- 相对导入(
)(当前)。/../constants
- 将其强制转换为任意类型(
)(常量为任意)。APIResponses…
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react",
"rootDir": "./src",
"baseUrl": "./src"
},
"include": [
"src"
]
}
它与相对导入一起工作的事实告诉我,问题可能出在您的
tsconfig.json
配置中。您可以将您的TypeScript配置添加到问题中吗?@AndrewHill Good point-done.将您的include更改为“include”:[“src/****”]
,将您的baseUrl更改为“baseUrl”:“src”
。删除rootDir
,因为它只用于控制带有outDir
标志的输出目录。另外值得检查(但不太可能)的是它是否与“strict”:false一起工作。如果确实如此,则意味着其中一个严格标志正在干扰您的导入。有关使用strict时打开的strict标志的列表,请参阅@AndrewHill尝试了所有操作(包括strict:false
),但我仍然在原地。