Skip to content

Commit

Permalink
fix(tsc): add .at() types manually to tsc (denoland#11443)
Browse files Browse the repository at this point in the history
  • Loading branch information
kitsonk committed Jul 19, 2021
1 parent a23c0af commit 07eb44e
Show file tree
Hide file tree
Showing 6 changed files with 216 additions and 87 deletions.
120 changes: 120 additions & 0 deletions cli/dts/lib.esnext.array.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http:https://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */

/// <reference no-default-lib="true"/>

interface Array<T> {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): T | undefined;
}

interface ReadonlyArray<T> {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): T | undefined;
}

interface Int8Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Uint8Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Uint8ClampedArray {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Int16Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Uint16Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Int32Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Uint32Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Float32Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface Float64Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): number | undefined;
}

interface BigInt64Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): bigint | undefined;
}

interface BigUint64Array {
/**
* Access item by relative indexing.
* @param index index to access.
*/
at(index: number): bigint | undefined;
}
2 changes: 2 additions & 0 deletions cli/dts/lib.esnext.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@ and limitations under the License.


/// <reference lib="es2021" />
/// <reference lib="esnext.array" />
/// <reference lib="esnext.intl" />
/// <reference lib="esnext.string" />
21 changes: 5 additions & 16 deletions cli/dts/lib.esnext.string.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,12 @@ See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */



/// <reference no-default-lib="true"/>


interface String {
/**
* Replace all instances of a substring in a string, using a regular expression or search string.
* @param searchValue A string to search for.
* @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
*/
replaceAll(searchValue: string | RegExp, replaceValue: string): string;

/**
* Replace all instances of a substring in a string, using a regular expression or search string.
* @param searchValue A string to search for.
* @param replacer A function that returns the replacement text.
*/
replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
/**
* Access string by relative indexing.
* @param index index to access.
*/
at(index: number): string | undefined;
}
1 change: 1 addition & 0 deletions cli/dts/typescript.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5205,6 +5205,7 @@ declare namespace ts {
* writeFileCallback
*/
writeFile?(path: string, data: string, writeByteOrderMark?: boolean): void;
getCustomTransformers?: (project: string) => CustomTransformers | undefined;
getModifiedTime(fileName: string): Date | undefined;
setModifiedTime(fileName: string, date: Date): void;
deleteFile(fileName: string): void;
Expand Down
12 changes: 12 additions & 0 deletions cli/tests/unit/esnext_test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
import { assertEquals, unitTest } from "./test_util.ts";

// TODO(@kitsonk) remove when we are no longer patching TypeScript to have
// these types available.

unitTest(function typeCheckingEsNextArrayString() {
const a = "abcdef";
assertEquals(a.at(-1), "f");
const b = ["a", "b", "c", "d", "e", "f"];
assertEquals(b.at(-1), "f");
});
Loading

0 comments on commit 07eb44e

Please sign in to comment.