2

JSX 工厂:

function h(type: string, _props, ..._children): HTMLElement {
    return document.createElement(type); // breakpoint here is hit
}

tsconfig.json:

"jsx": "react",
"jsxFactory": "h"

.tsx 文件中的用法:

const element = <div></div>; // = any

TypeScript 似乎没有HTMLElement从 JSX 工厂推断返回类型 ( )。该变量elementany此处的类型,这是不可取的。

我已经在 Visual Studio 2017 和 VS Code 中对此进行了测试。

Visual Studio 2017 中的工具提示说

我想知道是否可以让 TypeScript 推断 JSX 工厂的返回类型。如果不可能,这是 TypeScript 限制吗?为什么?

4

1 回答 1

0

TypeScript 手册规定如下:

JSX 结果类型

默认情况下,JSX 表达式的结果类型为 any。您可以通过指定 JSX.Element 接口来自定义类型。但是,无法从此接口检索有关 JSX 的元素、属性或子项的类型信息。这是一个黑匣子。

https://www.typescriptlang.org/docs/handbook/jsx.html#the-jsx-result-type

于 2019-01-01T13:06:17.957 回答