web-dev-qa-db-ja.com

2018年にTypeScriptで@typesのないnodejsモジュールをインポート/要求する

Webサイト用のTypeScriptnodejsプロジェクトがあります。この特定のnodejsモジュールで利用可能な機能を使用する必要があります: https://www.npmjs.com/package/weather-js

このモジュールのリポジトリには.d.tsファイルがありません。また、「@ types」TypeScriptリポジトリにもありません。このモジュールの型定義は必要ありませんが、TypeScriptには含まれておらず、エラーが発生します。

どちらの方法でインポートしようとしても、

TS2304: Cannot find name 'require'.

ビルドコンソールで、または

TypeError: qs.escape is not a function

ブラウザの開発コンソールで。

StackOverflowに関するここでの多くの回答は、2018年に利用できなくなったリポジトリを必要とするソリューション、または機能する可能性があるが私にとってはエラーが発生するソリューションを示唆しています

TypeError: qs.escape is not a function

2018年にTypeScriptでnodejsモジュール機能(.d.ts定義が利用できない)を使用/インポート/要求/消費する正しい方法は何ですか?

7
Marvos

ダミー定義を追加してインポートできるようにすることができますが、モジュールの内容を実際に入力する必要はありません(ただし、完全に入力して DefinitlyTyped に送信する必要がある場合は、誰もが型安全性の恩恵を受けることができます!)

天気-js.d.ts

// declaring module will allow TypeScript to import the module
declare module 'weather-js' {
  // typing module default export as `any` will allow you to access its members without compiler warning
  var weatherJs: any; 
  export default weatherJs;
}

yourCode.ts

import weather from 'weather-js'

weather.find({search: 'San Francisco, CA', degreeType: 'F'}, () => {})
7
alechill