Я изучаю Typescript и хочу знать, как правильно определять переменные-члены класса.
На данный момент я объявляю их в классе над конструктором, но чтобы убедиться, что они созданы в конструкторе (или я получаю предупреждение), я объявляю их как любой тип | нулевой. Это означает, что если я могу затем создать экземпляр переменной-члена в конструкторе, установив ее равной нулю, а затем установив ее правильное значение, когда я смогу.
Я не знаю, правильный ли это способ объявления переменных-членов. Например :
export default class FlowerBed {
canv:HTMLCanvasElement | null;
ctx:CanvasRenderingContext2D | null;
p2d:Path2D;
t:number;
currentPoint:Array<number>;
to:number = 0;
image:HTMLImageElement | null;
imagesrc:CanvasImageSource | null;
pattern:CanvasPattern | null;
constructor (garden:HTMLCanvasElement) {
this.image = null;
this.imagesrc = null;
this.canv = null;
this.ctx = null;
this.pattern = null;
this.to = 0;
this.p2d = new Path2D();
this.t = 0;
this.currentPoint = [160,350];
}
У меня нет значения холста, ctx, шаблона и т. д. во время строительства.
Есть ли более правильный способ действий?
Большое спасибо...
null
в особом значении? Я имею в виду, есть ли разница в вашем коде, если вы замените этиnull
наundefined
? - person Shlang   schedule 27.03.2020image:HTMLImageElement | undefined
и this.image = undefined в конструкторе? Думаю, что Undefined лучше, чем null, семантически это имеет больше смысла. - person miller the gorilla   schedule 27.03.2020null
со специальным значением, например, вы должны вернутьnull
в качестве результата рендеринга, иначе это будет считаться ошибкой. Это способ сделать вещи менее подверженными ошибкам, которые могут быть чрезмерными, если вы используете другие инструменты, такие как TypeScript. - person Shlang   schedule 27.03.2020