🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

Q&A

解決済

1回答

1434閲覧

暗黙のanyに対するエラーが出ない

toromou

総合スコア30

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

0グッド

0クリップ

投稿2019/10/28 03:41

TypeScriptを導入するために設定を行っています。
厳密に型チェックを行いたいので構成ファイルに"strict": trueを指定しました。
しかし、変数宣言時に型指定がないにも関わらずエラーが出ず、問題なくトランスパイル出来てしまいます。
ちなみに引数の型指定がないときはちゃんと叱ってくれるみたいです。
原因のわかる方がいらっしゃいましたらご教授よろしくお願いします。

tsconfig.json

json

1{ 2 "compilerOptions": { 3 "target": "es5", 4 "module": "commonjs", 5 "strict": true 6 } 7}

webpack.config.js

javascript

1const path = require('path'); 2const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 3const webpack = require('webpack'); 4 5module.exports = { 6 mode: 'development', 7 devtool: 'inline-source-map', 8 entry: './src/js/main.ts', 9 output: { 10 path: path.resolve('./'), 11 filename: 'bundle.js' 12 }, 13 resolve: { 14 extensions: ['.ts', '.js'] 15 }, 16 module: { 17 rules: [ 18 // typescript 19 { 20 test: /.ts$/, 21 loader: 'ts-loader' 22 }, 23 24 // SASS 25 { 26 test: /.(sa|sc|c)ss$/, 27 use: [ 28 MiniCssExtractPlugin.loader, 29 { 30 loader: 'css-loader', 31 options: { 32 url: false, 33 } 34 }, 35 { 36 loader: 'sass-loader', 37 options: { 38 sourceMap: true, 39 outputStyle: 'expanded', 40 } 41 } 42 ] 43 } 44 ] 45 }, 46 plugins: [ 47 new MiniCssExtractPlugin({ 48 filename: 'style.css', 49 }), 50 new webpack.ProvidePlugin({ 51 $: 'jquery', 52 jQuery: 'jquery' 53 }) 54 ] 55}

main.ts

typescript

1import { hello } from './sub'; 2import '../scss/main.scss'; 3 4const name: string = '田所'; 5const age: number = 24; 6const items = ['財布', 'スマホ', '免許'];// 暗黙のanyでエラーになるはずなのにならない 7 8$(() => { 9 const $target = $('.wrapper > p');// 同上 10 $target.html(hello(name, age)); 11 for (let item of items) { 12 console.log(item); 13 } 14});

sub.js

typescript

1export const hello = (name: string, age: number) => { 2 const str = `${name}さんは${age}歳です。`;// ここもエラーにならない 3 return str; 4}

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

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

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

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

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

guest

回答1

0

ベストアンサー

暗黙のanyでエラーになるはずなのにならない

この配列は全要素が文字列なので、自動でstring[]型推論されます。anyとはみなされません。

投稿2019/10/28 03:58

maisumakun

総合スコア145975

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

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

maisumakun

2019/10/28 04:00

同様に、const str = `(略)`も、代入しているのが文字列リテラルなので、stringに型推論されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問