TypeScript string型をliteral型だと気づかせる
as
を使えば気づかせられる
tsfunction iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo'
};
iTakeFoo(test.someProp); // Error: Argument of type string is not assignable to parameter of type 'foo'
literal に対応する文字列を普通に渡しても、 string
型だから違うよとエラーが出るので
asfunction iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo' as 'foo'
};
iTakeFoo(test.someProp); // Okay!
as
を使って気づかせる
もしくは、型アノテーションを使う
tsfunction iTakeFoo(foo: 'foo') { }
type Test = {
someProp: 'foo',
}
const test: Test = { // Annotate - inferred someProp is always === 'foo'
someProp: 'foo'
};
iTakeFoo(test.someProp); // Okay!
as const を使うと更に楽だと教えてもらった
tsfunction iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo'
} as const;
iTakeFoo(test.someProp); // Okay!