質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

838閲覧

[TS] 到達不能エラーが出ない

TOMIYASU_chan

総合スコア21

ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2020/05/24 02:00

編集2020/06/05 00:53

問題

以下のコードは無限に再帰しスタックが展開され到達不能となるコードですが
私の環境ではエラーを表示してくれません
環境設定(VS CodeやESLintで)の修正をすれば表示してくれるようになるのでしょうか?
returnの後ろのコードとかそういった単純なものでなければムリなのでしょうか?

typeScript

1type DeeperReadonly<T> = { 2 readonly [P in keyof T]: DeeperReadonly<T[P]> 3} 4 5function readOnlyfy<T>(obj: T): DeeperReadonly<T> { 6 return obj as DeeperReadonly<T> 7}

設定(tsconfig.json)

JSON

1{ 2 "compilerOptions": { 3 "target": "es2016", 4 "module": "commonjs", 5 "strict": true, 6 "strictNullChecks": true, 7 "moduleResolution": "node", 8 "esModuleInterop": true, 9 "declaration": false, 10 "sourceMap": false, 11 "outDir": "./dist/js/", 12 "rootDir": "./src/", 13 "lib": ["es6", "dom", "es2017", "es2018", "es2015.iterable","scripthost"], 14 "downlevelIteration": true, 15 "baseUrl": "./", 16 "typeRoots": [ 17 "node_modules/@types", 18 "types/index"], 19 "strictFunctionTypes": false, 20 "experimentalDecorators": true, 21 "emitDecoratorMetadata": true 22 }, 23}

設定(.eslintrc.js)

JSON

1module.exports = { 2 "ecmaFeatures": { 3 "modules": true 4 }, 5 "env": { 6 "browser": true, 7 "node" : true, 8 "es6" : true, 9 "mocha":true, 10 "jquery": true 11 }, 12 "extends": [ 13 "eslint:recommended", 14 "plugin:prettier/recommended" 15 ], 16 "plugins": [ 17 "@typescript-eslint", 18 "prettier" 19 ], 20 "globals": { 21 }, 22 "parser": "@typescript-eslint/parser", 23 "parserOptions": { 24 "sourceType": "module", 25 "project": "./tsconfig.json" 26 }, 27 "settings":{ 28 'import/extensions': ['.js','jsx','.ts','tsx'], 29 'import/resolver':{'node':['.js','jsx','.ts','tsx']} 30 }, 31 "rules": { 32 "no-console": "off", 33 "no-irregular-whitespace":'off', 34 "no-extra-semi": "warn", 35 "no-undef": "warn", 36 "quotes": ["warn", "single"], 37 "space-before-blocks": ["warn", { "functions": "always" }], 38 "@typescript-eslint/adjacent-overload-signatures": "error", 39 "no-unused-vars":"off", 40 "no-unreachable":"warn", 41 "no-restricted-syntax": [ 42 "error", 43 { 44 "selector": "TSEnumDeclaration", 45 "message": "Don't declare enums" 46 } 47 ], 48 "prettier/prettier": [ 49 "error", 50 { 51 "singleQuote": true, 52 "trailingComma": "es5", 53 "semi": false 54 }, 55 ], 56 }, 57}

環境

VS Code バージョン: 1.45.1
バージョン: 1.45.1
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 18.7.0 ← macOS Mojave

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/24 02:14

「到達不能となる」ことは、実際に確認しましたか?
TOMIYASU_chan

2020/05/24 02:19

いえ、実際には実行しれいません そういえば、実行そのものをしていませんね・・・ やってみます
TOMIYASU_chan

2020/05/24 02:29

以下のものを付け加えてトランスパイルしました let obj = { name: 'test', bodySize:{ b: 88, w: 55, h: 80, } } let res = readonlyify(obj) // Cannot assign to 'b' because it is a read-only property. res.bodySize.b = 99    十分に到達できています(w エラーが出ないことばかりが気になって聞いてしまいましたが 実際には問題なくトランスパイルできますからエラーも出ないですよね? 定義の段階では未確定な型Tについて実行時には確定しているわけだから 問題ないということでしょうか・・・ ※なお返信欄にコードを埋め込む方法がわからずベタ文ですみません
guest

回答1

0

ベストアンサー

定義の段階では未確定な型Tについて実行時には確定しているわけだから

問題ないということでしょうか・・・

TypeScriptはJavaScriptにトランスパイルする関係上、実行時点では型情報は存在しません

javascript

1function readOnlyfy(obj){ 2 return obj; 3}

JavaScriptとしては、単なる恒等関数になっています。

投稿2020/05/24 02:42

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問