1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
/// <reference path='fourslash.ts' />
// @strict: true
//// abstract class A { abstract a (); }
////
//// class TT { constructor () {} }
////
//// class AT extends A { a () {} }
////
//// class Foo {}
////
//// class T {
////
//// a: boolean;
////
//// static b: boolean;
////
//// private c: boolean;
////
//// d: number | undefined;
////
//// e: string | boolean;
////
//// f: 1;
////
//// g: "123" | "456";
////
//// h: boolean;
////
//// i: TT;
////
//// j: A;
////
//// k: AT;
////
//// l: Foo;
//// }
function fixes(name: string, type: string, options: { isPrivate?: boolean, noInitializer?: boolean } = {}) {
return [
`Add 'undefined' type to property '${name}'`,
`Add definite assignment assertion to property '${options.isPrivate ? "private " : ""}${name}: ${type};'`,
...(options.noInitializer ? [] : [`Add initializer to property '${name}'`]),
].map(description => ({ description }));
}
verify.codeFixAvailable([
...fixes("a", "boolean"),
...fixes("c", "boolean", { isPrivate: true }),
...fixes("e", "string | boolean"),
...fixes("f", "1"),
...fixes("g", '"123" | "456"'),
...fixes("h", "boolean"),
...fixes("i", "TT"),
...fixes("j", "A", { noInitializer: true }),
...fixes("k", "AT"),
...fixes("l", "Foo"),
{ description: "Remove unused declaration for: 'c'" },
]);
|