【问题标题】:Is it possible to specify global typings in JSX?是否可以在 JSX 中指定全局类型?
【发布时间】:2020-06-27 06:16:35
【问题描述】:

我在项目中使用 Preact,但我已经配置了设置,这样我就不必一直使用 import { h } from 'preact'。然而,问题是preact.d.ts 如果我不导入它就不会被选中,而且我收到的不是 Preact 的 html 属性,而是全局 React 的属性:

导入preact

我知道这似乎无关紧要,但我想访问一些 Preact 的属性,而不是全局 React 的属性。是否可以通过某种配置指向node_modules/preact/index.d.ts?我没有使用 typescript 作为语言,也没有自己编译,只有 VSCode。

【问题讨论】:

    标签: reactjs typescript visual-studio-code typescript-typings preact


    【解决方案1】:

    VSCode 不知道如何使用您的预分型。您应该在项目的根目录 (https://code.visualstudio.com/docs/languages/jsconfig) 添加一个 jsconfig.json 文件,在其中指定您的 jsxFactory(这是 vscode 使用的 TS 编译器选项https://www.typescriptlang.org/docs/handbook/compiler-options.html

    {
      "compilerOptions": {
        "jsx": "react",
        "jsxFactory": "h",
      },
      "exclude": [
        "node_modules",
        "**/node_modules/*"
      ]
    }
    

    【讨论】:

    • 但它确实知道。你如何解释它在没有配置的情况下获取属性的事实?
    • 它默认为 React,它使用你的导入来推断 Preact
    • 当我将 jsx 设置为 preact 时,它会变为 Value is not accepted. Valid values: "preserve", "react", "react-native".(1) :( 所以基本上,我想做的事情是不可能的......无论如何都要回答
    • 您应该将 jsxFactory 设置为 h,而不是将 jsx 设置为 'preact'
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多