由于React 16现在允许自定义DOM属性,我试图在我的Typescript代码中利用它:
import * as React from 'react';
<div className="page" size="A4">
</div>
Run Code Online (Sandbox Code Playgroud)
但收到此错误消息:
错误TS2339:类型'DetailedHTMLProps <HTMLAttributes <HTMLDivElement>,HTMLDivElement>'上不存在属性'size'.
这个帖子建议做一个module augmentation,所以我尝试这样:
import * as React from 'react';
declare module 'react' {
interface HTMLProps<T> {
size?:string;
}
}
Run Code Online (Sandbox Code Playgroud)
相同的错误消息.
最后,我还尝试将其声明page为新的HTML标记:
declare global {
namespace JSX {
interface IntrinsicElements {
page: any
}
}
}
<page className="page" size="A4">
</page>
Run Code Online (Sandbox Code Playgroud)
它消除了错误消息,但size在编译的代码中完全忽略了该属性,我最终得到:
<page className="page">
</page>
Run Code Online (Sandbox Code Playgroud)
理想情况下,最后一个是我的首选解决方案.我想在size自page定义标记旁边使用自定义属性.
tsconfig.js
{
"compilerOptions": {
"outDir": "build/dist",
"module": …Run Code Online (Sandbox Code Playgroud) 我需要将文件夹中的所有文件上传到服务器。我正在尝试实现选择目录窗口,而不是选择文件。
正常方式如:
<input type="file" webkitdirectory directory/>
Run Code Online (Sandbox Code Playgroud)
对我不起作用,并显示“选择文件”窗口。
但是当我用这个输入标签创建空的常规 html 文件时,它工作正常。有人知道如何使用 React 实现解决方案吗?
谢谢!
我在Typescript中有以下代码。为什么编译器会引发错误?
var object = {};
Object.defineProperty(object, 'first', {
value: 37,
writable: false,
enumerable: true,
configurable: true
});
console.log('first property: ' + object.first);
Run Code Online (Sandbox Code Playgroud)
js.ts(14,42):错误TS2339:类型“ {}”上不存在属性“ first”。
与mozilla 的文档(示例部分)中的代码段相同。