由于阵营16现在允许custom DOM attributes,我想利用这个在我的打字稿代码:属性不上类型存在“DetailedHTMLProps,HTMLDivElement>”与之反应16
import * as React from 'react';
<div className="page" size="A4">
</div>
但收到此错误信息:
错误TS2339:属性“大小”不存在于类型 '详细HTML详细信息< HTMLAttributes < HTMLDivElement>,HTMLDivElement>'。
这thread建议做一个module augmentation
,所以我想是这样的:
import * as React from 'react';
declare module 'react' {
interface HTMLProps<T> {
size?:string;
}
}
同样的错误消息。
最后,我也试图声明page
作为一个新的HTML标签:
declare global {
namespace JSX {
interface IntrinsicElements {
page: any
}
}
}
<page className="page" size="A4">
</page>
它摆脱了错误信息,但size
属性完全被忽略在编译的代码,我结束了:
<page className="page">
</page>
理想情况下,最后一个是我的首选解决方案。我想使用size
自定义属性以及page
自定义标签。
tsconfig.js
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"allowSyntheticDefaultImports": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"allowUnusedLabels": true,
"allowUnreachableCode": true
}
}
我不知道很多关于打字稿,但一个想法-might是stupid-,怎么样努力'数据size'? – bennygenel
哇...它摆脱了我的错误,并编译!是什么让你想到这个,为什么这个工作与诸如大小这样的“非短跑”名字相反?你可以写这个答案,以便我可以验证吗? –