今更ながら、TypeScriptに入門することになりました。
仕事柄、特に扱う必要もないんですが一昨年くらいからかなり人気があるので触ってみたいと思います。
TypeScriptって?
簡単に言うとJavaScriptの強化版です。(語弊を招いたらすみません)
JavaScriptは動的型付けなのですが、TypeScriptでは、明示的に型付けができる概念が追加されています。
定義できる型については、非常に詳しいQiitaがありますのでそちらを御覧ください。
https://qiita.com/uhyo/items/e2fdef2d3236b9bfe74a
小規模開発では動的型付けで問題ない場面が多いと思いますが、規模が大きくなってくると未定義のプロパティまみれになって辛い問題があります。静的型付けができるメリットはそのあたりにあると思います。
とりあえず触ってみたい!って方には、プレイグラウンドが用意されているのでそちらで触ってみてください。(Swiftとかにもある実際に試して遊べるサイトです)
https://www.typescriptlang.org/play
AtCoder Begineers Selection (ABS)
言語に入門するときは、やはりオライリーの本を買って、AtCoder社のコンテスト(ABC)を解くのが一番ですね(?)
プログラミングスクールとかに通っている人をよく見ますが、大枚叩いて通うくらいのやる気があれば独学でもいい気はしてます。 分からなくてもとりあえず競プロ、は選択肢としてアリだと思ってます。
https://atcoder.jp/contests/abs
では早速解いてみます。(とりあえず3問)
PracticeA - Welcome to AtCoder
import * as fs from "fs"
const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const a :number = +input[0]
const b :number = +input[1]
const c :number = +input[2]
const s :string = input[3]
const ans = a + b + c
console.log(`${ans} ${s}`)
ABC086A - Product
import * as fs from "fs"
const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const a :number = +input[0]
const b :number = +input[1]
console.log(a * b % 2 == 0 ? "Even" : "Odd")
ABC081A - Placing Marbles
import * as fs from "fs"
const input = fs.readFileSync("/dev/stdin", "utf8").split(/ |\n/g)
const s :string = input[0]
console.log(s.split("1").length - 1)
一応明示的に型指定をしてみました。
・・・今回の問題ではJavaScriptと大差無かったので、面白そうな問題があれば追記します。
コメントを残す