dart는 타입 추론을 한다. 즉, 변수의 타입을 정해주지 않아도 값을 통해 타입을 추론할 수 있다.
var name = "진진"
String name2 = "진진"
var는 변수로서 값을 변경할 수 있다
관습적으로, 함수나 메서드 내부의 지역변수를 선언할 때 var를 사용
calss에서 변수나 프로퍼티를 선언할 때는 타입을 선언(String, int...)
dynamic은 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드이다.
dynamic은 정말정말정말 필요할 때만 써야하고 최대한 사용하지 않아야 한다.
var name; // dynamic name
name = 'jin'
name = 1
name = true
타입 뒤에 ?를 붙임으로써 nullable한 타입으로 지정할 수 있다
String name = 'jinjin'
String? name = null
name?.length // null이 아닐 경우에만 .length를 호출함
final String name = 'jinjin'
name = 'newName' // 에러. final 변수는 값을 변경할 수 없다.
late은 var나 final 앞에 붙일 수 있다.
late는 초기 데이터 없이 변수를 선언할 수 있게 한다.
// final이지만 late이기 때문에 초기화할 때 값을 할당하지 않아도 됨
late final String name;
// do something...
name = 'jinjin'
const는 compile time constant를 만들어줌.
// 가능
const API = '123'
// 불가능. compile이 아닌 runTime에 사용 불가능
const data = fetchApi();