文字列テキストタイプの使用中にエラーが発生しました
3958 ワード
問題の状況
右側では、タイプスクリプトのインターフェイスがオブジェクトのプロパティとプロパティのタイプを定義します.
次に、ImageCardコンポーネントをテストするために、データImageInfoオブジェクトをスタックしてpropsに渡すと、次のようなタイプの不一致エラーが発生しました.
ImageInfoのtypeプロパティでは、文字列文字タイプ(String literal types)を使用して「image/jpeg」または「video/mp 4」のみを許可します.
そこで私はそれを「image/jpeg」としてスタックデータimageInfoのtype属性に入れたところ、エラーが発生しました.
問題の原因
よく読むと、スタックデータimageInfoのtype属性に「image/jpeg」を配置するタイプはstringタイプであり、インタフェースImageInfoのtype属性に定義されるタイプは文字列文字タイプであることがわかります.
解決策
初回訪問(良い方法X)
最初はスタックデータimageInfoのtype属性に「image/jpeg」を入れただけで、タイプスクリプトはstringを用いてタイプ推定を行ったと考えられ、問題が発生した.
const imageInfo = {
id: 'id1234';
description: 'null';
type: 'image/jpeg' as const;
hasSound: false;
imageWidth: 100;
imageHeight: 300;
bandWidth: 400;
}
そこで,タイプ推定に「image/jpeg」を持つ文字タイプをas const
でタイプブレークスルーとした.タイプスクリプトでconstと宣言すると、「image/jpeg」自体がタイプと推定されるため、「image/jpeg」はstringタイプではなく「image/jpeg」となります.
の手当てを
以上の方法は誤りを解決できるが,ただ適当な方法にすぎない.
ダメージデータimageInfoのtype属性だけでなく、その他の属性もImageInfoインタフェースタイプを満たす必要があるため、ダメージデータimageInfoのタイプ自体をimageInfoインタフェースタイプとして指定するのが適切である.
const imageInfo: ImageInfo = {
id: 'id1234',
description: 'null',
type: 'image/jpeg',
hasSound: false,
imageWidth: 100,
imageHeight: 300,
bandWidth: 400,
};
Reference
この問題について(文字列テキストタイプの使用中にエラーが発生しました), 我々は、より多くの情報をここで見つけました https://velog.io/@bambi-bam/Issue-문자열-리터럴-타입String-Literal-Types-사용-시-에러テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol