0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DenoAdvent Calendar 2024

Day 19

@deno-types ではなく @ts-types を使いましょう

Last updated at Posted at 2024-12-18

型が付いてないパッケージを Deno で使いたい場合に、使う側で型をあてるためのプラグマで、@deno-types というものがありました。

例えば、npm:react パッケージには型情報が同梱されていないため、以下のように単純に使うと全ての型が any になってしまいます。

import React, { useState } from "npm:react@^19.0.0";
// React と useState は any になってしまう

これに型をあてるためには以下のように記述します。

注意:古い書き方
// @deno-types="npm:@types/react@^19.0.0"
import React, { useState } from "npm:react@^19.0.0";

この記法を使うことで、ReactuseState に正しく型が付いた状態になります。

実はこの記法の代替記法で @ts-types というプラグマが Deno 1.43 から使えるようになっています (リリースブログでは記載が漏れてしまっていました)

最新の書き方
// @ts-types="npm:@types/react@^19.0.0"
import React, { useState } from "npm:react@^19.0.0";

この記法でも、ReactuseState に型が付いた状態になります。今後はこちらの @ts-types の方が推奨の書き方になります。

参考: https://docs.deno.com/runtime/reference/ts_config_migration/#providing-types-when-importing

@ts-types が追加されたモチベーションとしては、Deno が JSR に対応するにあたって、モジュール解決機能周りで Deno キーワードの利用を減らしたかったという事があったようです。

なお、公式ドキュメント上では、このコミットで、@deno-types が削除されて、@ts-types に書き変わっています。

実装的にはこちらの PR で @ts-types の扱いが追加されています

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?