μλ€ μΈμ΄μμ νλ³νμ΄ μΌμ΄λ λ
κ°νμ μΈμ΄λ μ묡μ μΈ ν λ³νμ νμ©νμ§ μκ³ ( νμ κ²μ¬λ₯Ό ν΅κ³Όνμ§ λͺ»ν νλ‘κ·Έλ¨μ μ€ν μ체λ₯Ό λ§λλ€)
μ½νμ μΈμ΄λ νμ΄ λ€λ₯Έ κ²½μ° μ ν΄μ§ λ£°μ λ°λΌ μ묡μ μΌλ‘ ν λ³νμ νμ©νλ€ (λ°νμμ νμ μ€λ₯λ₯Ό λ§λλ νμ΄ μλλΌλ μ€νμ λ§μ§ μλλ€)
// Javascript
"1" + 1 = "11" // weakly-typed
// Go
var num1 int = 17
var num2 float32 = 19.2
var sum1 float32 = num1 + num2 // error λ°μ strongly-typed
var num3 float32 = float32(num1) //intλ₯Ό float32λ‘ λͺ
μμ νλ³ν νμ
var sum2 float32 = num3 + num2 //μ μ λμ
μ μ νμ κ²μ¬λ₯Ό νλ μΈμ΄λ νμ (μλ£ν)μ΄ μ¬λ°λ₯Έμ§μ λν κ²μ¬λ₯Ό λ°νμ μ΄μ (μ»΄νμΌ μκ°)μ μννλ€.
λ°λλ‘ λμ νμ κ²μ¬λ₯Ό νλ μΈμ΄λ λ°νμ μμ νμ κ²μ¬λ₯Ό μννλ€.
λμ νμ κ²μ¬λ§μ μννλ μΈμ΄μμ μ μ νμ κ²μ¬λ₯Ό λμ νκ³ μ νλ μλμμ λνλ¬λ€.
νλ‘κ·Έλλ¨Έκ° λͺ μν μΌλΆ λΆλΆλ§ μ μ νμ κ²μ¬λ₯Ό κ±°μΉκ² νκ³ λλ¨Έμ§ λΆλΆμ κ·Έλλ‘ λμ νμ κ²μ¬κ° μ΄λ£¨μ΄μ§λ€.
const areYouCool: boolean = true;
const answer: number = 42;
const typescript: string = "great";
const greetings: string = `
Hello, Readers!
Welcome to TypeScript.
`;
const hasType: Object = {
TypeScript: true,
JavaScript: false
};
// Gradual Typingμ μ§μνλ λνμ μΈ μΈμ΄ Typescriptμ μμ
def add(x: int, y: int) -> int:
return x + y
print(add("this is ", "add function")) # "this is add function" λ¬Έμ μμ΄ μλνλ€
μμ κ°μ΄ νλ©΄ Pycharm (JetBrains) μλν°μμλ νμ μ λν κ²½κ³ λ₯Ό λμμ£ΌκΈ°λ§ νκ³ λ¬Έμ λ₯Ό λ§μμ£Όμ§λ μλλ€.
pip install mypy
λ₯Ό ν΅ν΄μ κ°λ¨νκ² μ€μΉνκ³
mypy app.py
mypyλ₯Ό ν΅ν΄ μ μ½λλ₯Ό μ€νμν€λ©΄ νμ
μ 체ν¬νκ³ μ€λ₯λ₯Ό λ°μμν¬ μ μλ€
app.py:5: error: Argument 1 to "add" has incompatible type "str"; expected "int"
app.py:5: error: Argument 2 to "add" has incompatible type "str"; expected "int"
int
λ str
κ³Ό κ°μ λ¨μν νμ
μ΄ μλ list
λ tuple
μ λν νμ
κ²μ¬λ₯Ό μ¬μ©ν λ €λ©΄ typing
ν¨ν€μ§λ₯Ό μ¬μ©νλ©΄ λμ§λ§ λμ€μ μ¬μ©νκ² λ λ μμΈνκ² μμλ³Όλ € νλ€.
Reference:
Type Annotation, typing, mypy - λ λμ Python μ½λλ₯Ό μν΄