내장 타입

A tour of the Dart language 페이지를 공부하면서 정리한 내용입니다.

Dart 언어에서는 아래 타입들을 특별하게 지원합니다.

지원 내용에는 리터럴을 사용해서 객체를 생성하는 기능이 포함됩니다. 예를 들어 '이것은 문자열입니다.'는 문자열 리터럴이고 true는 부울 리터럴입니다. Dart의 모든 변수는 객체. 즉, 클래스의 인스턴스이기 때문에 생성자를 사용하여 변수를 초기화할 수 있습니다. 예를들어, Map() 생성자를 사용해서 Map 인스턴스를 생성할 수 있습니다.

일부 다른 타입도 Dart 언어에서 특별한 역할을 합니다.

  • Object : Null을 제외한 모든 Dart 클래스의 수퍼 클래스(Superclass)입니다.

  • FutureStream : 비동기 지원에서 사용합니다.

  • Iterable : for-in 루프와 동기 제너레이터 함수에서 사용합니다.

  • Never : 표현식이 정상적으로 평가(Evaluating)될 수 없음을 나타냅니다. 항상 예외를 throw하는 함수에서 자주 사용합니다.

  • dynamic : 정적 타입 검사를 비활성화 함을 나타냅니다. 대개 Object, Object?를 대신 사용해야합니다.

  • void : 값이 사용되지 않음을 나타냅니다. 주로 함수 반환값으로 사용합니다.

void main() {
  // 반환값을 지정하지 않으면 null값을 반환합니다.
  print(nullFunction());
  
  // 반환값이 void로 지정된 함수의 반환값을 사용하려고 시도하면 컴파일 에러가 발생합니다.
  // Error: This expression has type 'void' and can't be used.
  //print(voidFunction());
  
  // 정상적으로 컴파일됩니다.
  intShorthandFunction();
}

nullFunction() {}

void voidFunction() {}

// 반환값을 void로 지정했으므로 return을 시도하면 컴파일 에러가 발생합니다.
// Error: Can't return a value from a void function.
void intFunction() {
  //return 99;
}

// 단축 함수 표현식에서는 void로 반환값을 지정해도 에러가 발생하지 않습니다.
void intShorthandFunction() => 99;

Last updated