由于React 16现在允许
custom DOM attributes,我试图在我的Typescript代码中利用它:
import * as React from 'react';
但收到此错误消息:
error TS2339: Property ‘size’ does not exist on type
‘DetailedHTMLProps< HTMLAttributes< HTMLDivElement>, HTMLDivElement>’.
这个thread建议进行模块扩充,所以我尝试了这种方式:
import * as React from 'react';
declare module 'react' {
interface HTMLProps {
size?:string;
}
}
相同的错误消息.
最后,我还尝试将页面声明为新的HTML标记:
declare global {
namespace JSX {
interface IntrinsicElements {
page: any
}
}
}
它消除了错误消息,但在编译的代码中完全忽略了size属性,我最终得到:
理想情况下,最后一个是我的首选解决方案.我想在页面自定义标记旁边使用尺寸自定义属性.
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
}
}