Search

[dart] type casting + optional chaining

subtitle
dart 타입 캐스팅, 옵셔널 체이닝
Created
2021/02/25 15:53
tags
dart
source: google image

type 'A' is not a subtype of type 'B'

아래와 같은 오류가 뜬다.
final List<String> authors = json['authors'] // 에러 => type 'List<dynamic>' is not a subtype of type 'List<String>'
Dart
복사
json['authors'].runtimeType 을 로깅해서 봤더니 List<dynamic> 이라고 떴다. 만약 실제로 String 타입이 오고 dart가 이를 모르는 상황이라면 타입 캐스팅을 위해 아래처럼 바꿔주면 된다.
(하지만 타입이 정말 다른 경우는 똑같은 에러가 발생할 것이다.)

optional chaining

optional chaining은 null이 올 수 있는 객체라면, null이 아닐 때만 그 안의 method나 값을 꺼낼 수 있게 해주는 것이다.
예를 들어 타입 캐스팅하려는 객체가 null이 될 수 있다면, 객체에 optional chaining ?. 을 붙여 null이 아닌 경우에 cast 함수가 실행되도록 할 수 있다.
final List<String> authors = json['authors']?.cast<String>()
Dart
복사

references