여기서 String, Object, Number, Boolean, Symbol을 타입으로 사용하는 것은 권장하지 않습니다. string, object, number, boolean, symbol을 사용하세요. 이유는 다음과 같은 단점이 있기 때문입니다.
function add(x: Number, y: Number) { return x + y; }
// Operator '+' cannot be applied to types 'Number' and 'Number'.
const str1: String = 'hello';
const str2: string = str1;
// Type 'String' is not assignable to type 'string'. 'string' is a primitive, but 'String' is a wrapper object. Prefer using 'string' when possible.
const obj: Object = 'what?';
Number 간에는 연산자를 사용할 수 없고, string에 String을 대입할 수도 없습니다. obj 변수는 Object 타입인데도 문자열 대입이 가능합니다. 따라서 string, object, number, boolean, symbol로 통일해서 쓰는 것이 좋습니다.
타입으로 쓸 수 있는 값, 쓸 수 없는 값을 외우기 어렵다면 일단 타입으로 표기해보면 됩니다. 실수로 타입으로 쓸 수 없는 값을 타입으로 사용하면 타입스크립트가 친절하게 에러 메시지로 알려줍니다.
function add(x: number, y: number) { return x + y; }
const add2: add = (x: number, y: number) => x + y;
// 'add' refers to a value, but is being used as a type here. Did you mean 'typeof add'?