在另一个 JavaScript 模块中如何声明类型

huangapple go评论65阅读模式
英文:

typescript: how to declare types in another javascript module

问题

假设我有一个导出一些类型供使用的 JavaScript 库(比如 js1.js)。我有一些 TypeScript 代码,放在一个 "script type="module"" 标签中,我想要使用这些类型(比如 ts1.ts),所以我可能会写:

import { sometype } from "./js1.js";

但为了让编译器知道这些类型,我需要一个描述文件(比如 ts1.d.ts)。在这个描述文件中我应该写什么来使一切正常?

我尝试在网上和 TypeScript 文档中寻找一些资源,但没有找到有用的信息。

英文:

suppose that I have a JavaScript library that export some types for uses(says js1.js). and I have some typescript codes that sits in a "<"script type="module">" tag that I want to use these type for(says ts1.ts), so I may write

import {sometype} from "./js1.js"

but in order to let the compiler know these types I need a description file(says ts1.d.ts). what should I put in this description file to make all works?

I tried to find some resource on the web and in typescript documentation but couldnt find something useful.

答案1

得分: 1

  1. 你的 blah.d.ts 必须与你的 blah.js 同名。
  2. 你的 blah.d.ts 必须导出与你的 blah.js 相同的内容,但是使用类型来代替。

或者你可以只有一个 blah.ts,代码与 blah.js 完全相同,只是加了类型,它会起作用的。

例如:

// blah.js
export function add(a, b) { return a + b; }
// blah.d.ts
export function add(a: number; b: number): number;

或者

// blah.js
export function add(a, b) { return a + b; }
// blah.ts
export function add(a: number; b: number): number { return a + b; }
英文:
  1. your blah.d.ts MUST be named same as your blah.js
  2. your blah.d.ts must be exporting the same things your blah.js export, but with types rather then

Alternatively you may just have blah.ts with the exact same code as blah.js but with added types, it'll work same

e.g.

// blah.js
export function add(a, b) { return a + b; }
// blah.d.ts
export function add(a: number; b: number): number;

OR

// blah.js
export function add(a, b) { return a + b; }
// blah.ts
export function add(a: number; b: number): number { return a + b; }

huangapple
  • 本文由 发表于 2023年4月7日 02:08:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/75952513.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定