jihousai 发表于 2022-11-4 00:58

js 如何引用 .d.ts 里的 interface

本帖最后由 jihousai 于 2022-11-4 01:00 编辑

有一个 .d.ts 文件,比如 http2.d.ts, 文件定义了一些 interface, 如下
    export interface Http2Stream extends stream.Duplex {
      /**
         * Set to `true` if the `Http2Stream` instance was aborted abnormally. When set,
         * the `'aborted'` event will have been emitted.
         * @Since v8.4.0
         */
      readonly aborted: boolean;
      /**
         * This property shows the number of characters currently buffered to be written.
         * See `net.Socket.bufferSize` for details.
         * @since v11.2.0, v10.16.0
         */
      readonly bufferSize: number;
      /**
         * Set to `true` if the `Http2Stream` instance has been closed.
         * @since v9.4.0
         */
      readonly closed: boolean;
ts小白,只知道.d.ts是个类型定义文件,我想在 .js 文件中引用 Http2Stream,如下
const
    { Http2Stream}   = require('http2'),
可是该怎么初始化一个 Http2Stream 对象呢?
谢谢。

thepoy 发表于 2022-11-4 08:13

直接用ts,为什么用js?
ts不比js复杂多少,学习曲线相差无几。
.d.ts无法直接被js引用,如果你使用lsp-typescript应该会自动引用这个文件以开启类型提示。

zang135579 发表于 2022-11-4 08:22

js 里不能用interface吧,还是直接用ts吧

1047504736 发表于 2022-11-4 09:44

d.ts 是给 typescript 的命名空间,使用 ts 开发自动引 d.ts

文止先生 发表于 2022-11-4 10:52

js使用require,引用的还是js,你打印一下require之后的对象看看有没有这个属性呢。
ts的interface可以帮助你了解属性

jihousai 发表于 2022-11-4 19:54

文止先生 发表于 2022-11-4 10:52
js使用require,引用的还是js,你打印一下require之后的对象看看有没有这个属性呢。
ts的interface可以帮 ...

打印 http2,确实是没有 Http2Stream 的属性。
我看nodejs文档,说不建议用户直接创建 Http2Stream 对象。
额,如果非要创建,岂不是要 copy 一份它的源码?。。
页: [1]
查看完整版本: js 如何引用 .d.ts 里的 interface