1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonエンジニアのTypeScript勉強記録 part1 文法と型

1
Posted at

はじめに

普段はPythonしか使っていないのですが、案件の幅を広げるためにTypeScriptの勉強を始めました。
「プロを目指す人のためのTypeScript入門」を読み進めていくシリーズです。
Pythonとどう違うのかを書いていこうと思います

今回Part1は書籍の第2章「基本的な文法・基本的な型」の内容です。

型について

TypeScriptは静的型付け言語

各変数が型を持っていて、型注釈(Pythonでいう型ヒント)を書くことで型を指定する。

const num: number = 1;
num = "hello"; //エラーが発生する 

この型注釈は必須なのかをChatGPTに聞きました。

TypeScriptで型注釈は常に必須ではない。 ただし、推論できない箇所や、tsconfig の厳格設定では必要になる場合がある、が正確です。
実務では、だいたい次の感覚がよくあります。

  • 書くことが多い
    関数の引数
    外部公開する関数の戻り値
    interface / type で表したいオブジェクト
    ライブラリ境界、API入出力、DBレスポンス整形部分
  • 省略しやすい
    const count = 3
    const name = "Alice"
    const items = users.filter(...) のように右辺から明らかなローカル変数
// これは注釈なしで十分なことが多い
const count = 3;          // number と推論される
const userName = "Taro";  // string と推論される

// これは実務では書くことが多い
function greet(name: string): string {
  return `Hello, ${name}`;
}

type User = {
  id: number;
  name: string;
};

function formatUser(user: User): string {
  return `${user.id}: ${user.name}`;
}

つまり、初めからPydanticが入っていて、「必須ではないが、Pythonでも型ヒントを書くようなシーンでは型注釈を書こう。」だと理解。

比較演算子

Pythonでは一致か不一致化を評価するために「==」と「!=」を用いるが、
TypeScriptでは「===」と「!==」を用いて評価する方がよい

「==」と「===」の違いは「型の一致をみるかどうか」

const str: any = "3";

console.log(str == 3);  // true
console.log(str === 3); // false

三項演算子

Pythonでは
値1 if 条件 else 値2

x = 101
s = 'odd' if x % 2 else 'even'
print(s)  # odd

TypeScriptでは
条件 ? 値1 : 値2

const x = 101
const s = x % 2 ? 'odd' : 'even'
console.log(s) // odd

if文

複数の条件分岐の場合
Pythonは「elif」
TypeScriptは「else if」

for文

1~100まで繰り返す場合
Python

for i in range(1, 101):
  print(i)

TypeScript

for (let i: number = 1; i <= 100; i++) {
  console.log(i)
}

TypeScriptでFizzBuzzを解いてみる

for (let num = 1; num <= 100; num++) {
    if (num % 3 == 0 && num % 5 == 0)  {
        console.log("fizzbuzz");
    } else if (num % 3 == 0 ) {
        console.log("fizz");
    } else if (num % 5 == 0) {
        console.log("buzz");
    } else {
        console.log(num);
    }
}

おわりに

  • プログラミング言語は「別言語を習得していると新しく学習する言語でも大部分はすんなり理解でき、細かな文法の違いをおさえるだけで良い」といった印象はあったが、本当にその通りだと思う
  • 文末の;と、インデントではなく{}でまとめるのに慣れるまで時間がかかりそう
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?