V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zcdll
V2EX  ›  React

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

  •  
  •   zcdll · 2018-06-22 12:29:36 +08:00 · 8847 次点击
    这是一个创建于 2346 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

    我想要在一个用 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 条回复    2018-06-22 22:39:51 +08:00
    sneezry
        1
    sneezry  
       2018-06-22 13:29:55 +08:00
    是的,必须写一个 d.ts 。

    react-select 有 types: https://www.npmjs.com/package/@types/react-select
    zcdll
        2
    zcdll  
    OP
       2018-06-22 14:57:23 +08:00
    @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  
       2018-06-22 15:25:00 +08:00 via iPhone
    https://www.npmjs.com/package/@types/dom-to-image

    这些纯粹的 js 流行项目有社区维护它们的类型
    zcdll
        4
    zcdll  
    OP
       2018-06-22 15:55:11 +08:00
    @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  
       2018-06-22 16:35:41 +08:00
    库包含 .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
       2018-06-22 22:39:51 +08:00
    @aaronly 了解了,谢谢!

    这周末打算重构一下我们自己的一个包
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:46 · PVG 03:46 · LAX 11:46 · JFK 14:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.