[Flutter] Dart 타입

jiveloper·2022년 12월 19일
0

Flutter

목록 보기
1/1
post-thumbnail

오늘은 Flutter의 기반 언어인 Dart에 대해 알아보겠습니다. 😖

우선 Dart의 타입부터 알아볼까요~?🤓


1. dynamic

  • 모든 타입 선언 가능
  • 타입 변경 가능
  • 변수 변경 가능
  • JS의 var와 유사
dynamic name = '다트';
name = 2; 
name = 'flutter';

2. var

  • 모든 타입 선언 가능
  • 타입 변경 불가능
  • 변수 변경 가능
var name = '다트';
name = 2; // error
name = '플러터; 

3. final, const

  • 모든 타입 선언 가능
  • 타입 변경 불가능
  • 변수 변경 불가능
final name = '다트';
name = '리액트 네이티브';	// error
const name = '다트';
name = '리액트 네이티브'; // error

final과 const는 한번 설정한 값을 변경할 수 없게 한다는 공통점이 있는 반면, 차이점도 존재한다.

1. final

  • 런타임에서 결정되는 값도 설정할 수 있음
  • 빌드 타임 알고 있지 않아도 됨

2. const

  • 컴파일 타임에서 상수를 정의
  • 런타임에서 정의되는 값을 설정할 수 없음
  • const로 설정하는 값은 대부분 리터럴이 됨
  • 빌드 타임 알아야 됨

예를 들어 DateTime.now() 의 경우 Run 버튼을 누른 후에 실행되는 코드이기 때문에, 런타임에서 호출 될 때마다 결과 값이 다르다. 이러한 값은 const로 설정할 수 없다.

final DateTime now = DateTime.now();
const DateTime now = DateTime.now(); // error

4. Null Safety

  • 개발되는 코드가 Null 안전성을 보장한 상태로 개발되게 하고자 하는 개념
  • Null Safety의 기본은 Nullable과 Non-Nullable의 구분
  • Dart 언어의 변수는 기본이 Non-Nullable로 선언되는 것이며, 만악 Nullable로 선언하고자 한다면 타입명 뒤에 ? 를 추가해 주어야 한다.

1. Non-Nullable

null이 될 수 없음

String name = '다트';	// only String
name = null;	// error

2. Nullable

null이 될 수 있음

String? name = '다트';	// string | null
name = null;

3. Null Check

1. ?? 연산자

특정 변수를 Null Check하고, Null일 경우 다른 값 대입

String x = '다트';
String y = '리액트 네이티브';

String result = x ?? y //  x가 널이 아니기 때문에 x가 대입된다.

print(result);  //  다트

2. ??= 연산자

특정 변수를 Null Check하고, 초기 값을 대입

String x = null;
String y = '리액트 네이티브';

String result = x ??= y //  x가 널이기 때문에 y가 대입된다.

print(result);  //  리액트 네이티브

3. ?. 연산자

특정 변수를 Null Check하고, Null이 아니면 메소드 실행

Map<String, dynamic> x = {'address': 'Seoul'};
x?.forEach((key, value) => print('$key: $value'));	// address: Seoul

4. Null Assertion

  • nullable 유형의 표현식이 null이 아니라고 확신하는 경우, Null Assertion 연산자(!)를 사용하여 null을 허용하지 않는 것으로 처리
  • null이 될 가능성이 있다면 쓰지 않는 것을 권장
 int? x = null;
 int y = x!;
  
 print(y);	// error
int? x = 2;
int y = x!;
  
print(y);	// 2

5. 타입 비교 연산자

  • is : 같은 타입이면 true 반환 / 다른 타입이면 false 반환
  • is! : 같은 타입이면 false 반환 / 다른 타입이면 true 반환 (is와 반대)
int x = 1;

print(x is int);	// true
print(x is String);	// false
print(x is! int);	// false
print(x is! String);	// true




참고

https://lcw126.tistory.com/354

https://cafepurple.tistory.com/72

profile
👩🏻‍💻 글을 쉽고 재미있게 전달하고 싶은 앱 개발자입니다.

0개의 댓글