Rado Kirov
Rado Kirov
Clutz emits ```typescript interface I { abstract foo() } ``` For @abstract on interfaces, but that is invalid TS.
The change is trivial unfortunately it is hard to land on a big codebase like google internal.
If a closure file wants to reopen an interface and add a property: ```javascript goog.module('goog.bar'); const I = goog.require('goog.foo.I'); /** @const {string} */ I.prototype.foo; ``` Incremental clutz currently completely ignores...
Consider: ``` typescript /** @typedef */ var Foo; /** @const */ var ns; /** @typedef {Foo | string} */ ns.Foo; ``` To closure, Foo in the second type def is...
The following input: ```javascript class C { } C.message = goog.msg("..."); ``` gents is smart enough to not move this to a 'static' field, because that breaks goog.msg. However, that's...
The following pattern: ``` /** * @param {...string|Array} args */ function (...args) { ... } ``` got translated to ``` function(...args) {...} ``` without any type annotations, which triggered 'noImplicitAny'...
In incremental mode we have to translate typedefs without seeing the original definitions. For example: ```javascript /** * @typedef {string|null} */ var StringOrNull; ``` is translated to: ```typescript type StringOrNull...
The major usage of clutz is google internal codebase, and recently we have switched to using the '--partialInputs' flag for all users. We should clean up the clutz codebase by...
The following snippet of closure: ```javascript /** @return {string | undefined} */ MyI.prototype.foo /** @override */ MyClassThatImplementsI.prototype.foo = function() { // no return; } ``` When run over the class...