forked from microsoft/TypeScript
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathdeclarationEmitGenericTypeParamerSerialization2.js
More file actions
71 lines (61 loc) · 1.74 KB
/
declarationEmitGenericTypeParamerSerialization2.js
File metadata and controls
71 lines (61 loc) · 1.74 KB
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
//// [tests/cases/compiler/declarationEmitGenericTypeParamerSerialization2.ts] ////
//// [declarationEmitGenericTypeParamerSerialization2.ts]
type ExpandRecursively<T> = {} & {
[P in keyof T]: T[P]
}
type G<T = string> = {
get readonlyProperty(): T;
field: T;
method(p: T): T;
fnField: (p: T) => T;
set writeOnlyProperty(p: T);
get property(): T;
set property(p: T);
get divergentProperty(): string | T;
set divergentProperty(p: number | T);
};
export const x = (() => null! as ExpandRecursively<G>)();
function makeV() {
type X<T> = {
get readonlyProperty(): T;
field: T;
method(p: T): T;
fnField: (p: T) => T;
set writeOnlyProperty(p: T);
get property(): T;
set property(p: T);
get divergentProperty(): string | T;
set divergentProperty(p: number | T);
}
return null! as X<number>
}
export const v = makeV();
//// [declarationEmitGenericTypeParamerSerialization2.js]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.v = exports.x = void 0;
exports.x = (function () { return null; })();
function makeV() {
return null;
}
exports.v = makeV();
//// [declarationEmitGenericTypeParamerSerialization2.d.ts]
export declare const x: {
readonly readonlyProperty: string;
field: string;
method: (p: string) => string;
fnField: (p: string) => string;
writeOnlyProperty: string;
property: string;
divergentProperty: string;
};
export declare const v: {
readonly readonlyProperty: number;
field: number;
method(p: number): number;
fnField: (p: number) => number;
writeOnlyProperty: number;
property: number;
get divergentProperty(): string | number;
set divergentProperty(p: number);
};