reactjs - 使用 defaultProps 时打字稿不发出枚举导入
问题描述
我正在尝试使用defaultProps
具有 Enum 属性的组件。组件的 props 接口在另一个文件中定义,在defaultProps
.
这工作正常,但是当我编译项目并检查 tsc 为组件生成的声明文件时,它会defaultProps
正确生成类型,但枚举没有导入语句。
应用程序.ts
import * as React from 'react';
import './App.css';
import { defaults } from './defaults';
import { IAppProps } from './types';
import logo from './logo.svg';
class App extends React.Component<IAppProps> {
public static defaultProps = {
animal: defaults.animal
}
public render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.tsx</code> and save to reload.
</p>
</div>
);
}
}
export default App;
类型.tsx
export enum AnimalEnum {
Cat = "Cat",
Dog = "Dog"
}
export interface IAppProps {
animal: AnimalEnum;
}
默认值.ts
import { AnimalEnum } from "./types";
export const defaults = {
animal: AnimalEnum.Cat
}
发出的文件 App.d.ts
import * as React from 'react';
import './App.css';
import { IAppProps } from './types';
declare class App extends React.Component<IAppProps> {
static defaultProps: {
animal: AnimalEnum; //<---------AnimalEnum doesn't have import!
};
render(): JSX.Element;
}
export default App;
tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": false,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"declaration": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true
},
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
]
}
打字稿版本是^3.0.3
解决方案
看起来像一个错误。我举报了。作为一种解决方法,如果您在defaultProps
字段上添加类型注释(即使它只是{animal: typeof defaults.animal}
),生成的声明文件似乎是有效的。
推荐阅读
- spring - 无法为多个消费者订阅 Spring Kafka Test 嵌入式 Kafka 代理
- postgresql - 想实现多用户钱包可以同时更新,但是x用户钱包一次只能更新一个线程
- c# - 这里的意思是什么?
- selenium-grid - Webdriverio v7 远程硒网格
- scala - 在我的窗口中满足某个条件之前,我如何窗口化?
- c++ - 在 C++ 类中使用大数组
- fluid-dynamics - 在 COMSOL Multiphysics 中添加布朗力时出现警告
- python - 如何根据 Select 小部件中的选定值更新 Bokeh 中的图形?
- jenkins - 仅在 Jenkins 上执行测试时出现未知主机异常错误
- excel - 在下一个可见单元格上应用 VLOOKUP