TypeScript で TwitterAPI を扱う

2020/02/25 15:02:542020/02/25 15:24:20


TypeScript では現時点で Python でいう Tweepy のようにエンドポイントまで包括的にラップされたライブラリが存在しないので、私は npm の twitter と @types/twitter、そしてレスポンスの型定義が入っている twitter-d を組み合わせて使っています。

事前準備
TwitterAPI にアクセスする時は事前に CS/CK/AT/ATS を用意しておく必要があるのはご存知の通りです。
まだお持ちでない場合は拙作の torinosuke で簡単に取得できます。アプリケーション作れないんだけど…と言う場合はリスク承知で for Mac のキーで AT/ATS を作成できます。

セットアップ
プロジェクトにライブラリを追加します。
add.sh
$ yarn add twitter 
$ yarn add -D @types/twitter twitter-d
client インスタンスを作ります。
init.ts
import Twitter from "twitter" 
 
const client = new Twitter({ 
  consumer_key: ck, 
  consumer_secret: cs, 
  access_token_key: at, 
  access_token_secret: ats, 
})
自分のユーザー情報をとってみましょう
getMySelf.ts
import { FullUser } from "twitter-d" 
 
const me = <FullUser>await client.get("account/verify_credentials", {})
ツイートしてみましょう
tweet.ts
import { Status } from "twitter-d" 
 
const tweet = <Status>await client.post("statuses/update", { 
	status: "はろー", 
})
パスについて
POST statuses/update — Twitter Developers などにある POST statuses/update を使う場合、post で statuses/update にペイロードを送付と言う流れです。

余談
本当は
理想.ts
const tweet = await client.post<Status>("statuses/update", { 
 	status: "はろー", 
 })
みたいな感じで型つけられると不自然じゃないんですけどね
  • Twitter.ResponseData で実態は { [key: string]: any } みたいな型がついていて微妙に邪魔
  • @types/twitter に PR 投げるべきかなあ


著者の画像

ci7lus

@ci7lus

Caramelize - Made withCaramelizeand / Privacy