技術とかの雑なToday I Learnedメモ

types="next/types/global"がyarn devで勝手に消える

types="next/types/global"がyarn devで勝手に消える

えー、タイトルのとおりです。

next-env.d.tsに最初から書いてあるんだけど、突然gitで差分が出てきた(だいぶ前だけど放置してた)

これなんなんだ?と思って調べたけどあんまりいい感じのやつが出てこなかった。

next-env.d.tsの意味 - Qiita

スラッシュ3本はTriple-Slash Directivesというらしい。

TypeScript: Documentation - Triple-Slash Directives

このコメントはTypeScript特有のもので、ファイルの先頭にあるTriple-Slash Directivesはコンパイラへの指示として読み込まれます。 このコメントがステートメントや宣言の後に書かれていた場合はただのコメントとして解釈されるので、必ず処理を書き始める前に書く必要があります。

ということらしい。

typesのところを見ると、types="hoge"@types/hoge/index.d.tsで宣言された名前を使用できるらしい。

で、記事によればtypes="next/types/global"はnode_modules/next/types/global.d.ts`の型宣言を使えるみたい。

中身これ↓

/// <reference types="node" />

// Extend the NodeJS namespace with Next.js-defined properties
declare namespace NodeJS {
  interface Process {
    /**
     * @deprecated Use `typeof window` instead
     */
    readonly browser: boolean
  }

  interface ProcessEnv {
    readonly NODE_ENV: 'development' | 'production' | 'test'
  }
}

declare module '*.module.css' {
  const classes: { readonly [key: string]: string }
  export default classes
}

declare module '*.module.sass' {
  const classes: { readonly [key: string]: string }
  export default classes
}

declare module '*.module.scss' {
  const classes: { readonly [key: string]: string }
  export default classes
}

interface Window {
  MSInputMethodContext?: unknown
}

これがyarn devの実行で自動で消されるんだけど、.module.cssとかの宣言された定義を使っていないから自動で消えてるのかな?

分からん。