8000 Support latest version of typescript by leebyron · Pull Request #1827 · immutable-js/immutable-js · GitHub
[go: up one dir, main page]

Skip to content

Support latest version of typescript #1827

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,14 @@ jobs:
path: ~/.npm
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.OS }}-node-
- uses: actions/cache@v2
with:
path: ~/.dts
key: ${{ runner.OS }}-dts-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.OS }}-dts-
- run: npm ci
- run: npm run build
# TODO: enable once TS issues are resolved
# - run: npm run test:types
- run: npm run test:types:flow
- run: npm run test:types
- run: npm run check:git-clean

test:
Expand Down
21,839 changes: 9,751 additions & 12,088 deletions package-lock.json
10000

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@
"rollup-plugin-strip-banner": "2.0.0",
"through2": "4.0.2",
"transducers-js": "^0.4.174",
"tslint": "5.20.1",
"typescript": "3.0.3",
"tslint": "6.1.3",
"typescript": "4.3.4",
"uglify-js": "3.11.1",
"uglify-save-license": "0.4.1",
"vinyl-buffer": "1.0.1",
Expand Down
3 changes: 1 addition & 2 deletions pages/lib/genTypeDefData.js
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,7 @@ function DocVisitor(source) {
case ts.SyntaxKind.TupleType:
return {
k: TypeKind.Tuple,
// TODO: node.elements in TS v4
types: node.elementTypes.map(parseType),
types: node.elements.map(parseType),
};
case ts.SyntaxKind.IndexedAccessType:
return {
Expand Down
30 changes: 15 additions & 15 deletions type-definitions/Immutable.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,9 @@ declare module Immutable {
* listFromPlainSet.equals(listFromPlainArray) // true
* ```
*/
export function List(): List<unknown>;
export function List<T>(): List<T>;
export function List<T>(collection: Iterable<T>): List<T>;
export function List<T>(): List<T>;
export function List(): List<unknown>;

export interface List<T> extends Collection.Indexed<T> {

Expand Down Expand Up @@ -1603,9 +1603,9 @@ declare module Immutable {
* Note: `Set` is a factory function and not a class, and does not use the
* `new` keyword during construction.
*/
export function Set(): Set<unknown>;
export function Set<T>(): Set<T>;
export function Set<T>(collection: Iterable<T>): Set<T>;
export function Set<T>(): Set<T>;
export function Set(): Set<unknown>;

export interface Set<T> extends Collection.Set<T> {

Expand Down Expand Up @@ -1787,9 +1787,9 @@ declare module Immutable {
* Note: `OrderedSet` is a factory function and not a class, and does not use
* the `new` keyword during construction.
*/
export function OrderedSet(): OrderedSet<unknown>;
export function OrderedSet<T>(): OrderedSet<T>;
export function OrderedSet<T>(collection: Iterable<T>): OrderedSet<T>;
export function OrderedSet<T>(): OrderedSet<T>;
export function OrderedSet(): OrderedSet<unknown>;

export interface OrderedSet<T> extends Set<T> {

Expand Down Expand Up @@ -1947,9 +1947,9 @@ declare module Immutable {
* Note: `Stack` is a factory function and not a class, and does not use the
* `new` keyword during construction.
*/
export function Stack(): Stack<unknown>;
export function Stack<T>(): Stack<T>;
export function Stack<T>(collection: Iterable<T>): Stack<T>;
export function Stack<T>(): Stack<T>;
export function Stack(): Stack<unknown>;

export interface Stack<T> extends Collection.Indexed<T> {

Expand Down Expand Up @@ -2382,7 +2382,7 @@ declare module Immutable {
* Record.getDescriptiveName(me) // "Person"
* ```
*/
export function getDescriptiveName(record: Record<{}>): string;
export function getDescriptiveName(record: Record<any>): string;

/**
* A Record.Factory is created by the `Record()` function. Record instances
Expand Down Expand Up @@ -2697,7 +2697,7 @@ declare module Immutable {
*
* Converts keys to Strings.
*/
toJS(): Object;
toJS(): { [key: string]: unknown };

/**
* Shallowly converts this Keyed Seq to equivalent native JavaScript Object.
Expand Down Expand Up @@ -2810,9 +2810,9 @@ declare module Immutable {
* Note: `Seq.Indexed` is a conversion function and not a class, and does
* not use the `new` keyword during construction.
*/
export function Indexed(): Seq.Indexed<unknown>;
export function Indexed<T>(): Seq.Indexed<T>;
export function Indexed<T>(collection: Iterable<T>): Seq.Indexed<T>;
export function Indexed<T>(): Seq.Indexed<T>;
export function Indexed(): Seq.Indexed<unknown>;

export interface Indexed<T> extends Seq<number, T>, Collection.Indexed<T> {
/**
Expand Down Expand Up @@ -2962,9 +2962,9 @@ declare module Immutable {
* Note: `Seq.Set` is a conversion function and not a class, and does not
* use the `new` keyword during construction.
*/
export function Set(): Seq.Set<unknown>;
export function Set<T>(): Seq.Set<T>;
export function Set<T>(collection: Iterable<T>): Seq.Set<T>;
export function Set<T>(): Seq.Set<T>;
export function Set(): Seq.Set<unknown>;

export interface Set<T> extends Seq<T, T>, Collection.Set<T> {
/**
Expand Down Expand Up @@ -3248,7 +3248,7 @@ declare module Immutable {
*
* Converts keys to Strings.
*/
toJS(): Object;
toJS(): { [key: string]: unknown };

/**
* Shallowly converts this Keyed collection to equivalent native JavaScript Object.
Expand Down
57 changes: 33 additions & 24 deletions type-definitions/ts-tests/covariance.ts
Original file line number Diff line number Diff line change
@@ -1,65 +1,74 @@
import {
List,
Map,
OrderedMap,
OrderedSet,
Set,
Stack,
} from '../../';
import { List, Map, OrderedMap, OrderedSet, Set, Stack } from '../../';

class A { x: number; }
class B extends A { y: string; }
class C { z: string; }
class A {
x: number;
constructor() {
this.x = 1;
}
}
class B extends A {
y: string;
constructor() {
super();
this.y = 'B';
}
}
class C {
z: string;
constructor() {
this.z = 'C';
}
}

// List covariance
var listOfB: List<B> = List<B>();
var listOfA: List<A> = listOfB;
let listOfB: List<B> = List<B>();
let listOfA: List<A> = listOfB;

// $ExpectType List<B>
listOfA = List([new B()]);

// $ExpectError
var listOfC: List<C> = listOfB;
let listOfC: List<C> = listOfB;

// Map covariance
declare var mapOfB: Map<string, B>;
var mapOfA: Map<string, A> = mapOfB;
let mapOfA: Map<string, A> = mapOfB;

// $ExpectType Map<string, B>
mapOfA = Map({b: new B()});

// $ExpectError
var mapOfC: Map<string, C> = mapOfB;
let mapOfC: Map<string, C> = mapOfB;

// Set covariance
declare var setOfB: Set<B>;
var setOfA: Set<A> = setOfB;
let setOfA: Set<A> = setOfB;

// $ExpectType Set<B>
setOfA = Set([new B()]);
// $ExpectError
var setOfC: Set<C> = setOfB;
let setOfC: Set<C> = setOfB;

// Stack covariance
declare var stackOfB: Stack<B>;
var stackOfA: Stack<A> = stackOfB;
let stackOfA: Stack<A> = stackOfB;
// $ExpectType Stack<B>
stackOfA = Stack([new B()]);
// $ExpectError
var stackOfC: Stack<C> = stackOfB;
let stackOfC: Stack<C> = stackOfB;

// OrderedMap covariance
declare var orderedMapOfB: OrderedMap<string, B>;
var orderedMapOfA: OrderedMap<string, A> = orderedMapOfB;
let orderedMapOfA: OrderedMap<string, A> = orderedMapOfB;
// $ExpectType OrderedMap<string, B>
orderedMapOfA = OrderedMap({b: new B()});
// $ExpectError
var orderedMapOfC: OrderedMap<string, C> = orderedMapOfB;
let orderedMapOfC: OrderedMap<string, C> = orderedMapOfB;

// OrderedSet covariance
declare var orderedSetOfB: OrderedSet<B>;
var orderedSetOfA: OrderedSet<A> = orderedSetOfB;
let orderedSetOfA: OrderedSet<A> = orderedSetOfB;
// $ExpectType OrderedSet<B>
orderedSetOfA = OrderedSet([new B()]);
// $ExpectError
var orderedSetOfC: OrderedSet<C> = orderedSetOfB;
let orderedSetOfC: OrderedSet<C> = orderedSetOfB;
8 changes: 4 additions & 4 deletions type-definitions/ts-tests/es6-collections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import {
} from '../../';

// Immutable.js collections
var mapImmutable: ImmutableMap<string, number> = ImmutableMap<string, number>();
var setImmutable: ImmutableSet<string> = ImmutableSet<string>();
const mapImmutable: ImmutableMap<string, number> = ImmutableMap<string, number>();
const setImmutable: ImmutableSet<string> = ImmutableSet<string>();

// $ExpectType Map<string, number>
mapImmutable.delete('foo');

// ES6 collections
var mapES6: Map<string, number> = new Map<string, number>();
var setES6: Set<string> = new Set<string>();
const mapES6: Map<string, number> = new Map<string, number>();
const setES6: Set<string> = new Set<string>();

// $ExpectType boolean
mapES6.delete('foo');
8 changes: 4 additions & 4 deletions type-definitions/ts-tests/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {

{ // #constructor

// $ExpectType List<any>
// $ExpectType List<unknown>
List();

const numberList: List<number> = List();
Expand Down Expand Up @@ -355,13 +355,13 @@ import {

{ // #flatten

// $ExpectType Collection<any, any>
// $ExpectType Collection<unknown, unknown>
List<number>().flatten();

// $ExpectType Collection<any, any>
// $ExpectType Collection<unknown, unknown>
List<number>().flatten(10);

// $ExpectType Collection<any, any>
// $ExpectType Collection<unknown, unknown>
List<number>().flatten(false);

// $ExpectError
Expand Down
26 changes: 13 additions & 13 deletions type-definitions/ts-tests/map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import { Map, List } from '../../';

{ // #constructor

// $ExpectType Map<{}, {}>
// $ExpectType Map<unknown, unknown>
Map();

const numberMap: Map<number, number> = Map();

// $ExpectType Map<number, string>
Map([[1, 'a']]);

Expand All @@ -14,11 +16,9 @@ import { Map, List } from '../../';
// $ExpectType Map<string, number>
Map({ a: 1 });

// $ExpectError - TypeScript does not support Lists as tuples
Map(List([List(['a', 'b'])]));

// $ExpectError
const invalidNumberMap: Map<number, number> = Map();
// No longer works in typescript@>=3.9
// // $ExpectError - TypeScript does not support Lists as tuples
// Map(List([List(['a', 'b'])]));
}

{ // #size
Expand All @@ -39,7 +39,7 @@ import { Map, List } from '../../';
Map<number, number>().get(4, 'a');

// $ExpectError
Map<number, number>().get<number, number>(4, 'a');
Map<number, number>().get<number>(4, 'a');
}

{ // #set
Expand Down Expand Up @@ -291,7 +291,7 @@ import { Map, List } from '../../';
Map<string, number>().mergeWith((prev: number, next: number, key: string) => 1, { a: 'a' });

// $ExpectType Map<number, string | number>
Map<number, number | string>().mergeWith((prev: number, next: string, key: number) => 1, Map<number, string>());
Map<number, number | string>().mergeWith((prev: number | string, next: number | string, key: number) => 1, Map<number, string>());
}

{ // #mergeDeep
Expand Down Expand Up @@ -324,19 +324,19 @@ import { Map, List } from '../../';
{ // #mergeDeepWith

// $ExpectType Map<number, number>
Map<number, number>().mergeDeepWith((prev: number, next: number, key: number) => 1, Map<number, number>());
Map<number, number>().mergeDeepWith((prev: unknown, next: unknown, key: unknown) => 1, Map<number, number>());

// $ExpectError
Map<number, number>().mergeDeepWith((prev: number, next: number, key: number) => 1, Map<number, string>());
Map<number, number>().mergeDeepWith((prev: unknown, next: unknown, key: unknown) => 1, Map<number, string>());

// $ExpectType Map<string, number>
Map<string, number>().mergeDeepWith((prev: number, next: number, key: string) => 1, { a: 1 });
Map<string, number>().mergeDeepWith((prev: unknown, next: unknown, key: unknown) => 1, { a: 1 });

// $ExpectError
Map<string, number>().mergeDeepWith((prev: number, next: number, key: string) => 1, { a: 'a' });
Map<string, number>().mergeDeepWith((prev: unknown, next: unknown, key: unknown) => 1, { a: 'a' });

// $ExpectType Map<number, string | number>
Map<number, number | string>().mergeDeepWith((prev: number, next: string, key: number) => 1, Map<number, string>());
Map<number, number | string>().mergeDeepWith((prev: unknown, next: unknown, key: unknown) => 1, Map<number, string>());
}

{ // #flip
Expand Down
Loading
0