を見つけることができない、私は構造を次ています活字体は、(アウレリアビューモデルの一部である)私の活字体ファイル<em></em>では、インタフェース名
import {Chart} from './chart';
interface IMargin {
top: number, right: number, bottom: number, left: number
}
export class App{
chartOptions: any;
constructor(margin: IMargin) { // No error here
this.chartOptions = {
element: "#chart",
margin: IMargin // Error: Cannot find name "IMargin"
};
}
attached() {
var chart = new Chart(this.chartOptions);
chart.addChart();
}
}
Typescript
コンパイラは、コンストラクタでインタフェースを使用しても問題がありませんコンストラクタ内にmargin
を定義するために使用すると、エラーCannot find name "IMargin"
が返されます。何故ですか?
また、正しい方法でない場合は、インターフェイスを宣言するのに最適な場所はどこですか?ありがとうございました。この
export class App{
chartOptions: any;
constructor(margin: IMargin) { // No error here
// instead of this
//this.chartOptions = {
// element: "#chart",
// margin: IMargin // Error: Cannot find name "IMargin"
//};
// use this
this.chartOptions = {
element: "#chart",
margin: margin
} as { element: string, margin: IMargin };
よう
をあなたはインターフェイスを割り当てていますthis.chartOptions.marginに、this.chartOptions = {element: '#chart'、margin:margin}と書く必要があるパラメータマージンを割り当てる場合は、 – mgiesa
いいえ、パラメータ 'margin'は、' IMargin'インタフェースがコンストラクタのパラメータで利用可能ですが、コンストラクタ自体の内部では利用できないというコントラストを示すことに過ぎません。これは明らかです。 – akshayKhot