File: jsdocInTypeScript.errors.txt

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (78 lines) | stat: -rw-r--r-- 2,983 bytes parent folder | download
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
tests/cases/compiler/jsdocInTypeScript.ts(16,23): error TS2304: Cannot find name 'MyType'.
tests/cases/compiler/jsdocInTypeScript.ts(23,33): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
tests/cases/compiler/jsdocInTypeScript.ts(25,3): error TS2345: Argument of type '1' is not assignable to parameter of type 'boolean'.
tests/cases/compiler/jsdocInTypeScript.ts(25,15): error TS2339: Property 'length' does not exist on type 'number'.
tests/cases/compiler/jsdocInTypeScript.ts(30,3): error TS2339: Property 'x' does not exist on type '{}'.
tests/cases/compiler/jsdocInTypeScript.ts(42,12): error TS2503: Cannot find namespace 'N'.


==== tests/cases/compiler/jsdocInTypeScript.ts (6 errors) ====
    // JSDoc typedef tags are not bound TypeScript files.
    /** @typedef {function} T */
    declare const x: T;
    
    class T {
        prop: number;
    }
    
    x.prop;
    
    // Just to be sure that @property has no impact either.
    /**
     * @typedef {Object} MyType
     * @property {string} yes
     */
    declare const myType: MyType; // should error, no such type
                          ~~~~~~
!!! error TS2304: Cannot find name 'MyType'.
    
    // @param type has no effect.
    /**
     * @param {number} x
     * @returns string
     */
    function f(x: boolean) { return x * 2; } // Should error
                                    ~
!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
    // Should fail, because it takes a boolean and returns a number
    f(1); f(true).length;
      ~
!!! error TS2345: Argument of type '1' is not assignable to parameter of type 'boolean'.
                  ~~~~~~
!!! error TS2339: Property 'length' does not exist on type 'number'.
    
    // @type has no effect either.
    /** @type {{ x?: number }} */
    const z = {};
    z.x = 1; // Error
      ~
!!! error TS2339: Property 'x' does not exist on type '{}'.
    
    // @template tag should not interfere with constraint or default.
    /** @template T */
    interface I<T extends number = 0> {}
    
    /** @template T */
    function tem<T extends number>(t: T): I<T> { return {}; }
    
    let i: I; // Should succeed thanks to type parameter default
    
    /** @typedef {string} N.Str */
    import M = N; // Error: @typedef does not create namespaces in TypeScript code.
               ~
!!! error TS2503: Cannot find namespace 'N'.
    
    // Not legal JSDoc, but that shouldn't matter in TypeScript.
    /**
     * @type {{foo: (function(string, string): string)}}
     */
    const obj = { foo: (a, b) => a + b };
    
    /** @enum {string} */
    var E = {};
    E[""];
    
    // make sure import types in JSDoc are not resolved
    /** @type {import("should-not-be-resolved").Type} */
    var v = import(String());