타입스크립트 왜 이렇게 만들어졌을까?
타입스크립트는 왜 컴파일 레벨에서 강제하지 않을까?이펙티브 타입스크립트를 읽다가 문득 궁금했다.“왜 타입스크립트는 자바나 C#처럼 컴파일 레벨에서 타입을 완전히 강제하지 않을까?”이 질문의 답을 찾다 보니, 단순한 기술적 이유가 아니라 웹이라는 플랫폼의 철학과 자바스크립트의 역사적 맥락이 깊게 얽혀 있었다.1. 웹 브라우저 환경의 철학: “부분적 실패를 견딘다”자바스크립트를 해본 사람이라면 알겠지만, 자바스크립트는 그 어떤 실수에도 관대하다.undefined를 덧셈해도 죽지 않고, 엉뚱한 타입을 넘겨도 그냥 실행된다.이런 유연함(혹은 관대함) 은 단순한 결함이 아니라, 웹 환경의 생존 전략이었다.웹의 기본 철학은 “부분적 실패를 견딘다(Tolerate partial failure)”이다.이미지 하나가 깨..
- Language/JavaScript · TypeScript
- · 2025. 10. 26.
자바스크립트에서 제너레이터(Generator)
자바스크립트에서 이터러블한 함수를 만들 때 사용되는 객체입니다. 좀 더 자세하게 알아보도록 하겠습니다. Generator function 제네레이터 함수는 function 앞에 *을 붙여서 정의하고 Generator로 선언한 함수는 Generator 객체를 반환합니다. function* generator(i) { yield i; yield i+1; } const get = generator(10); console.log(gen.next().value); // output: 10 console.log(gen.next().value); // output: 11 위 코드와 같이 첫 요청을 했을 때에는 값을 넣었을 때는 10을 리턴하지만 next() 후 다시 리턴을 해보니 11을 리턴합니다. 여기서 한번더 ne..
- Language/JavaScript · TypeScript
- · 2021. 12. 8.
javaScript에서의 Symbol이란
자바스크립트 기반의 프로젝트를 진행하면서 String, number, boolean, undefinded, null 등의 값과는 다른 Symbol이라는 타입도 있다는 것을 알게되었습니다. 심볼은 다른 타입과 달리 독특하게 동작하기 때문에 그와 관련해서 정리를 하기 위한 글입니다. 심볼이란? 문서에서는 아래와 같이 정의를 하고 있습니다. Symbol() 함수는 심볼(symbol) 형식의 값을 반환하는데, 이 심볼은 내장 객체(built-in objects)의 여러 멤버를 가리키는 정적 프로퍼티와 전역 심볼 레지스트리(global symbol registry)를 가리키는 정적 메서드를 가지며, "new Symbol()" 문법을 지원하지 않기 때문에 생성자 어떤 면에서는 불완전한 내장 객체 클래스(built-..
- Language/JavaScript · TypeScript
- · 2021. 11. 25.