zcdll
V2EX  ›  React

在 TypeScript 写的 React 项目中引入普通 JS 写的包,必须写 d.ts 吗?

  •  
  •   zcdll · Jun 22, 2018 · 9702 views
    This topic created in 2892 days ago, the information mentioned may be changed or developed.

    如题

    我想要在一个用 TypeScript 写的 React 项目中引入普通 JS 写的包,自己已经发布到 NPM 上了,webpack 打包的时候 libraryTarget: "commonjs2"

    然后我在引入的时候,import XXX from XXX,webstorm 报错,提示 TS7016: Could not find a declaration file for module XXX

    我想知道,我必须写一个 d.ts 吗?

    还是我用 webpack 打包的方式不对?

    我发现某些网上的包也是普通 JS 写的,也没有找到 d.ts ,但是引入的时候没有问题,例如 react-select 这个

    6 replies    2018-06-22 22:39:51 +08:00
    sneezry
        1
    sneezry  
       Jun 22, 2018
    是的,必须写一个 d.ts 。

    react-select 有 types: https://www.npmjs.com/package/@types/react-select
    zcdll
        2
    zcdll  
    OP
       Jun 22, 2018
    @sneezry 抱歉,看到 react-select 的 d.ts 了。

    不过我们还用了另外一个库,[dom-to-image]( https://github.com/tsayen/dom-to-image),这个包没找到 d.ts 啊。

    我们用的是 `const domtoimage = require('dom-to-image')` 的方式引入的,然后可以用。

    这个是什么意思?
    sneezry
        3
    sneezry  
       Jun 22, 2018 via iPhone
    https://www.npmjs.com/package/@types/dom-to-image

    这些纯粹的 js 流行项目有社区维护它们的类型
    zcdll
        4
    zcdll  
    OP
       Jun 22, 2018
    @sneezry 感谢!

    我刚才查了好些东西,大概懂你说的意思了。

    不过有新的疑问了,我看介绍说是,通过 npm i @types/dom-to-image -S 这样的方式安装的的话,会按照这些 types。

    但是我的安装方式是 npm i dom-to-image -S,而且 package.json 里面也没有 types 这个字段。

    社区维护的 types 在 https://www.npmjs.com/package/@types/dom-to-image 这里,那么 他是怎么进入我的项目中的呢?

    我全局搜索了一下,没有找到 dom-to-image 的 d.ts
    aaronly
        5
    aaronly  
       Jun 22, 2018
    库包含 .d.ts, npm i lib -S
    库不包含,@types 里能找到, npm i lib -S; npm i @types/lib -D
    库不包含,@types 里找不到, search gayhub, npm i gaytypedef -D
    库不包含, @types 里找不到, gayhub 搜不到,自己写
    zcdll
        6
    zcdll  
    OP
       Jun 22, 2018
    @aaronly 了解了,谢谢!

    这周末打算重构一下我们自己的一个包
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2838 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:54 · PVG 22:54 · LAX 07:54 · JFK 10:54
    ♥ Do have faith in what you're doing.