File: codeFixClassPropertyInitialization.ts

package info (click to toggle)
node-typescript 4.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 396,552 kB
  • sloc: javascript: 1,444,377; makefile: 7; sh: 3
file content (60 lines) | stat: -rw-r--r-- 1,406 bytes parent folder | download | duplicates (5)
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'" },
]);