IT (58) 썸네일형 리스트형 Rust lang - 참조 및 대여에 대한 생각 정리 https://cdbst.tistory.com/159 Rust lang - 소유권(Ownership)에 대한 생각https://rust-book.cs.brown.edu/ch04-00-understanding-ownership.html Understanding Ownership - The Rust Programming LanguageOwnership is Rust’s most unique feature and has deep implications for the rest of the language. It enables Rust to make memory safecdbst.tistory.com 서론이전에 작성한 소유권에 대한 생각을 먼저 읽으면 앞으로 작성한 글에서 무슨 소리를 하는지 이해하기 편할 것이다.. Rust lang - 소유권(Ownership)에 대한 생각 https://rust-book.cs.brown.edu/ch04-00-understanding-ownership.html Understanding Ownership - The Rust Programming LanguageOwnership is Rust’s most unique feature and has deep implications for the rest of the language. It enables Rust to make memory safety guarantees without needing a garbage collector, so it’s important to understand how ownership works. In this chapter,rust-book.cs.brown.edu .. Effective Typescript - 11 - 잉여 속성 체크 한계 인지하기 타입이 명시된 변수에 객체 리터럴을 할당할 때 타입스크립트는 해당 타입의 속성이 있는지, 그리고 '그 외 속성이 없는지'를 확인합니다. (구조적 타이핑 무시) interface Room { numDorrs: number, ceilingHeightFt: number; } const r: Room = { numDorrs : 1, ceilingHeightFt: 10, elephant: 'present' // 오류 }; const obj = { numDorrs : 1, ceilingHeightFt: 10, elephant: 'present' }; const r: Room = obj // 정상, 임시 변수를 도입하면 잉여 속성 체크가 동작하지 않습니다. 위 예제에서 확인 되듯, 타입이 명시된 변수에 리터럴을 할당.. Effective Typescript - 10 - 객체 래퍼 타입 피하기 타입스크립트는 기본형과 객체 래퍼 타입을 별도로 모델링합니다. * string과 String * number와 Number * boolean과 Boolean * symbol과 Symbol * bigint와 BigInt 여기서 string을 사용할 때는 특히 유의해야 합니다. string을 String이라고 잘못 타이핑하기가 쉽고, 실수를 하더라도 처음에는 잘 동작하는 것처럼 보이기 때문입니다. function getStringLen(foo: String){ return foo.length; } getStringLen("hello"); // 정상 getStringLen(new String("hello")); // 정상 그러나 string을 매개변수로 받는 메서드에 String 객체를 전달하는 순간 문제가 .. Effective Typescript - 9 - 타입 단언보다는 타입 선언을 사용하기 아래 예제는 변수를 할당 할 때, 타입 단언과 타입 선언을 사용하는 코드입니다. interface Person { name: string }; const alice: Person = { name: 'Alice' }; // 타입 선언 (추천) const bob = { name : 'Bob'} as Person; // 타입단언 (비추) 타입 선언이 타입 단언보다 타입스크립트의 언어지원을 받기에 훨씬 유리합니다. 그 이유에 대한 것은 아래 예제를 보십시오. interface Person { name: string }; const alice: Person = {} // 오류 const bob = {} as Person // 오류가 아님 타입 체커의 기능을 온전히 사용하려면 어떤 방식을 쓰는게 유리한지 이해할 수.. Effective Typescript - 8 - 타입 공간과 값 공간의 심벌 구분하기 타입스크립트의 심벌(symbol)은 타입 공간이나 값 공간 중 한 곳에 존재합니다. 심벌은 같더라도 속하는 공간에 따라 다른 것을 나타냅니다. 따라서 이와 관련된 혼란이 올 수 도 있습니다. 아래 예제가 바로 그러한 상황입니다. //타입 공간에 존재 interface Cylinder { radius: number; height: number; } // 값 공간에 존재 const Cylinder = ( radious : number, height: number ) => ({radious: radious, height: height}); 위와 같은 상황에 혼란에 빠지면 아래와 같은 상황에 직면할 수 있습니다. //타입 공간에 존재 interface Cylinder { radius: number; height.. Effective Typescript - 7 - 타입이 값들의 집합이라고 이해하기 타입스크립트의 타입은 '할당 가능한 값들의 '집합'으로 이해하는 것이 좋습니다. (타입의 범위) 가장 작은 타입 집합은 아무 값도 포함하지 못하는 집합인 never입니다. never로 선언된 변수에는 어떠한 값도 할당 불가입니다. 그다음으로 작은 집합은 한 가지 값만 포함하는 타입입니다. 이들은 타입스크립트에서 유닛(unit) 타입 이라고도 불리는 리터럴(literal)입니다. type A = 'A'; type B = 'B'; type Twelve = 12; 복수개의 리터럴 타입을 묶으려면 유니온(union) 타입을 사용합니다. 유니온은 타입연산자 '|'를 이용해서 만듭니다. 집합에서 합집합의 개념으로 이해할 수 있습니다. type A = 'A'; type B = 'B'; type Twelve = 12;.. Effective Typescript - 5 - any 타입 지양하기 타입스크립트 사용시 nay 타입이나 as any 타입을 사용하고 싶은 상황이 많을 겁니다. 하지만 any를 사용하면 타입스크립트의 언어 지원을 온전히 받지 못하는 치명적인 단점이 있습니다. any 타입을 사용하면 타입 체커와 타입스크립트 언어 서비스를 무력화 시킵니다. any 타입은 내재하는 문제를 감추며, 개발 경험을 나쁘게 하고, 타입 스시템의 신뢰도를 떨어뜨립니다. 최대한 사용을 피하는게 좋습니다. 이전 1 2 3 4 ··· 8 다음