【发布时间】:2018-12-08 13:40:53
【问题描述】:
我在这里找到了解决方案:Webpack & Typescript image import
但是我收到了错误:
[ts]
Types of property 'src' are incompatible.
Type 'typeof import("*.png")' is not assignable to type 'string | undefined'.
Type 'typeof import("*.png")' is not assignable to type 'string'.
我想我需要以某种方式强制导入,但不知道如何。
我在 React 中这样做。我看到src 属性被定义为string | undefined,这就是弹出错误的原因。
代码如下:
import * as Logo from 'assets/images/logo.png';
HTML:
<img src={Logo} alt="" />
以及基于上述解决方案的定义:
declare module "*.png" {
const value: string;
export default value;
}
Tsconfig:
{
"compilerOptions": {
"baseUrl": "./",
"jsx": "react",
"lib": ["es5", "es6", "dom"],
"module": "commonjs",
"noImplicitAny": false,
"outDir": "./dist/",
"sourceMap": true,
"strictNullChecks": true,
"target": "es5",
"typeRoots": [
"custom_typings"
]
},
"include": ["./src/**/*.tsx"],
"exclude": ["dist", "build", "node_modules"]
}
【问题讨论】:
-
根据here,您应该使用 require 而不是 import。所以它应该是这样的:
const Logo = require('assets/images/logo.png') -
是的,我看到了。但这不是这样做的优雅方式。问题是,当您执行
import时,它会在您加载应用程序时起作用。但是你得到 lint 错误。 -
import有效,因此应该使用它。 @MarioPetrovic 默认导入没有名称。这就是您可以省略* as部分的原因。import Logo from './logo.jpg'很好,因为它等同于const Logo = require(./logo.jpg)
标签: reactjs typescript module tsconfig react-tsx