-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: init.ts周りのeslintエラーと型の修正 #10157
refactor: init.ts周りのeslintエラーと型の修正 #10157
Conversation
packages/frontend/src/init.ts
Outdated
@@ -114,8 +115,10 @@ if (['smartphone', 'tablet'].includes(deviceKind)) { | |||
} | |||
|
|||
//#region Set lang attr | |||
const html = document.documentElement; | |||
html.setAttribute('lang', lang); | |||
if (lang) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
langがnullになることはないはず?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@syuilo
window.localStorage.getItem
の戻り値がstring | null
なので、型としてnull
であることを考慮する必要がありそうです(setAttribute
の引数はstring
しか許容していない)。
空文字列など何らかの初期値をセットするようにしますか?
packages/frontend/src/init.ts
Outdated
//#region account indexedDB migration | ||
import { set } from '@/scripts/idb-proxy'; | ||
|
||
{ | ||
const accounts = miLocalStorage.getItem('accounts'); | ||
if (accounts) { | ||
set('accounts', JSON.parse(accounts)); | ||
miLocalStorage.removeItem('accounts'); | ||
} | ||
} | ||
//#endregion |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
マイグレーションもう消しても良さそう
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@syuilo
このPRで消して問題ないですか?
Codecov Report
@@ Coverage Diff @@
## develop #10157 +/- ##
========================================
Coverage 78.59% 78.59%
========================================
Files 161 161
Lines 19647 19649 +2
Branches 331 331
========================================
+ Hits 15442 15444 +2
Misses 4205 4205
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
|
…r_occur_in_frontend_init
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
TypeScriptのバージョン5.0.2と@micorsoft/api-extractorのbundled compilerとバージョン合わないエラーなのでこのPRとは関係なさそうですかね? |
関係ないはず |
👍 |
* refactor/miLocalStorageのメソッドに戻り値追加 * refactor/miLocalStorageのキーとしてdebugがconfig.tsに存在するので追加 * fix/JSON.parseにnullは入らないのでnullの時は分岐させてnullにする * refactor/修正したファイルの型調整+記法の統一 * fix/型のためにlangがnullの時はhtmlの言語の設定をしない * refactor/catchで何もしないと警告が出るので修正 * refactor/細かい点の修正 * refactor/変数の二重定義になっていた二重定義になっていたので修正 * refactor/importの整理(通常のimportは最初に処理されるので影響はない想定) * fix/vueファイルに型を与えてインポート時の型エラーを防ぐ * refactor/開発環境のみで利用するので,eslintの設定を変更する * fix/vueの定義を最小限にする * fallback language to 'en-US' * remove accounts migration * fix:vueの型定義ファイルを消す --------- Co-authored-by: tamaina <[email protected]>
What
/packages/frontend/src/init.ts
ファイルの型修正とeslint修正config.ts
とlocal-storage.ts
も修正(エラーの原因だと思って最初に修正してしまいました)Why
misskeyの型安全性を保った状態で開発を進められるようにするため
Additional info (optional)
document.documentElement
に定義するlang
はこれまでnull
の時が設定される可能性があったが、nullの場合は'en-US'にフォールバックするようにしたlang="null"
となっていましたが、nullには意味がないため何も設定しないようにしました(空文字列は別の意味を持つため指定しませんでした)。https://html.spec.whatwg.org/multipage/dom.html#attr-lang
vueファイルを解釈できずにエラーが出ていたので
/packages/frontend/src/types/vue-shim.d.ts
に型定義をしました。window
に特別なプロパティ($i
や$store
)を渡す部分ですが、eslintの設定で一部anyを許容することで対応しました。開発環境でのみwindow
に特別なメソッドを持たせているので、本番のwindow
からも間違って扱わないようにwindow
型の拡張ではなく、eslintの設定で一部anyを許容するようにしました。