v0.4.2
版本发布时间: 2023-03-09 01:47:03
mattpocock/ts-reset最新发布版本:v0.4.2(2023-03-09 01:47:03)
0.4.2
Minor Changes
-
ce9db42: Added support for widening in
Array.lastIndexOf
,Array.indexOf
,ReadonlyArray.lastIndexOf
andReadonlyArray.indexOf
. -
107dfc2: Changed the array.includes on readonly arrays to NOT be a type predicate. Before this change, this perfectly valid code would not behave correctly.
type Code = 0 | 1 | 2; type SpecificCode = 0 | 1; const currentCode: Code = 0; // Create an empty list of subset type const specificCodeList: ReadonlyArray<SpecificCode> = []; // This will be false, since 0 is not in [] if (specificCodeList.includes(currentCode)) { currentCode; // -> SpecificCode } else { // This branch will be entered, and ts will think z is 2, when it is actually 0 currentCode; // -> 2 }
Removing the type predicate brings ts-reset closer towards correctness.
-
4765413: author: @mefechoel
Added the
Map.has
rule.Similar to
.includes
orSet.has()
,Map.has()
doesn't let you pass members that don't exist in the map's keys:// BEFORE const userMap = new Map([ ["matt", 0], ["sofia", 1], [2, "waqas"], ] as const); // Argument of type '"bryan"' is not assignable to // parameter of type '"matt" | "sofia" | "waqas"'. userMap.has("bryan");
With the rule enabled,
Map
follows the same semantics asSet
.// AFTER import "@total-typescript/ts-reset/map-has"; const userMap = new Map([ ["matt", 0], ["sofia", 1], [2, "waqas"], ] as const); // .has now takes a string as the argument! userMap.has("bryan");
Patch Changes
- b15aaa4: Fixed an oversight with the initial
set-has
implementation by adding support toReadonlySet
.