mirror of
https://github.com/google/blockly.git
synced 2026-01-04 15:40:08 +01:00
* refactor(blocks): Auto-migration of blocks/math.js to ts This is just the result of running js2ts on this file. * fix(blocks): Manually migrate & fix types in math.ts * chore(blocks): clang-format math.ts * fix(blocks): Corrections for comments on PR #6900 * refactor(blocks): Define types for mixin-ed blocks, etc. Define types to represent the union of Block and each of the *_MIXINs, and use these types for the type of this in mixin methods. * refactor(blocks): Misc minor changes Make sure validator functions explicitly return undefined. Field.prototype.setValidator takes a FieldValidator<T>, which must be a non-void function. I'm not sure why tsc was not objecting to the void implementation here, but it does in other very similar situations so for consistency explicitly return undefined to signal the value should be used unchanged. Also undo previous change of !. to ?.: I think it wisest to try to preserve the existing behaviour as exactly as possible for now, and make behaviour changes (i.e., ones that affect the generated code) separately. * fix(blocks): Fix erroneous typing of mixins It turns out that the previous types for these were completely wrong, for two reasons: - They should be intersection types (which have the union of the properties), not union types (which have the interseciton of the properties). - The *_MIXIN types were already declared as having type BlockDefinition, which is ultimately an alias for any. TypeScript doesn't like (some) kinds of circularly defined types, so fixing the above necessitates declaring a few auxiliary types just to make the type checker happy - but the end result is excellent and caught an actual type error in the code.