diff --git a/packages/api-fetch/src/middlewares/test/preloading.ts b/packages/api-fetch/src/middlewares/test/preloading.ts
index 96352f60250db4..c00e957383f5e8 100644
--- a/packages/api-fetch/src/middlewares/test/preloading.ts
+++ b/packages/api-fetch/src/middlewares/test/preloading.ts
@@ -101,12 +101,12 @@ describe( 'Preloading Middleware', () => {
const noResponseMock =
'undefined' === typeof window.Response;
if ( noResponseMock ) {
- // @ts-expect-error
+ // @ts-expect-error The stub does not implement the full `Response` static side.
window.Response = class {
constructor( body, options ) {
- // @ts-expect-error
+ // @ts-expect-error `body` is not a declared property on the stub.
this.body = JSON.parse( body );
- // @ts-expect-error
+ // @ts-expect-error `headers` is not a declared property on the stub.
this.headers = options.headers;
}
};
@@ -141,7 +141,7 @@ describe( 'Preloading Middleware', () => {
async () => {}
);
if ( noResponseMock ) {
- // @ts-expect-error
+ // @ts-expect-error The operand of `delete` must be optional.
delete window.Response;
}
return response.then( ( value ) => {
diff --git a/packages/blocks/src/api/matchers.ts b/packages/blocks/src/api/matchers.ts
index 8b35d28f4ecb98..9c588dbc285845 100644
--- a/packages/blocks/src/api/matchers.ts
+++ b/packages/blocks/src/api/matchers.ts
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-// @ts-ignore
+// @ts-expect-error `hpq` does not ship type declarations.
export { attr, prop, text, query } from 'hpq';
/**
diff --git a/packages/blocks/src/api/parser/get-block-attributes.ts b/packages/blocks/src/api/parser/get-block-attributes.ts
index 8cc4ddbebe4eb5..33c5c74650471b 100644
--- a/packages/blocks/src/api/parser/get-block-attributes.ts
+++ b/packages/blocks/src/api/parser/get-block-attributes.ts
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-// @ts-ignore
+// @ts-expect-error `hpq` does not ship type declarations.
import { parse as hpqParse } from 'hpq';
import memoize from 'memize';
diff --git a/packages/blocks/src/store/process-block-type.ts b/packages/blocks/src/store/process-block-type.ts
index caedcf825b32c6..6a99d1852fa42c 100644
--- a/packages/blocks/src/store/process-block-type.ts
+++ b/packages/blocks/src/store/process-block-type.ts
@@ -1,9 +1,8 @@
/**
* External dependencies
*/
-// @ts-ignore -- No declaration file available.
+// @ts-expect-error -- Its declaration file is not exposed through the `exports` map.
import { isPlainObject } from 'is-plain-object';
-// @ts-ignore -- No declaration file available.
import { isValidElementType } from 'react-is';
/**
diff --git a/packages/boot/src/components/navigation/drilldown-item/index.tsx b/packages/boot/src/components/navigation/drilldown-item/index.tsx
index 294a9c8ab2d96d..9561e6e44ea1f7 100644
--- a/packages/boot/src/components/navigation/drilldown-item/index.tsx
+++ b/packages/boot/src/components/navigation/drilldown-item/index.tsx
@@ -10,7 +10,6 @@ import type { ReactNode } from 'react';
import {
FlexBlock,
__experimentalItem as Item,
- // @ts-ignore
__experimentalHStack as HStack,
Icon as WCIcon,
} from '@wordpress/components';
diff --git a/packages/boot/src/components/navigation/dropdown-item/index.tsx b/packages/boot/src/components/navigation/dropdown-item/index.tsx
index 581173358e0c5f..07c05755375806 100644
--- a/packages/boot/src/components/navigation/dropdown-item/index.tsx
+++ b/packages/boot/src/components/navigation/dropdown-item/index.tsx
@@ -10,7 +10,6 @@ import type { ReactNode } from 'react';
import {
FlexBlock,
__experimentalItem as Item,
- // @ts-ignore
__experimentalHStack as HStack,
Icon as WCIcon,
__unstableMotion as motion,
@@ -72,7 +71,7 @@ export default function DropdownItem( {
}: DropdownItemProps ) {
const menuItems: MenuItem[] = useSelect(
( select ) =>
- // @ts-ignore
+ // @ts-expect-error Store types are not available when selecting by store name.
select( STORE_NAME ).getMenuItems(),
[]
);
diff --git a/packages/boot/src/components/navigation/index.tsx b/packages/boot/src/components/navigation/index.tsx
index b903ca0ace3c93..3b38ae7bd95c6b 100644
--- a/packages/boot/src/components/navigation/index.tsx
+++ b/packages/boot/src/components/navigation/index.tsx
@@ -24,7 +24,7 @@ function Navigation() {
useSidebarParent();
const menuItems = useSelect(
( select ) =>
- // @ts-ignore
+ // @ts-expect-error Store types are not available when selecting by store name.
select( STORE_NAME ).getMenuItems() as MenuItem[],
[]
);
diff --git a/packages/boot/src/components/navigation/navigation-item/index.tsx b/packages/boot/src/components/navigation/navigation-item/index.tsx
index f353f249068045..a0b0a2b53adae3 100644
--- a/packages/boot/src/components/navigation/navigation-item/index.tsx
+++ b/packages/boot/src/components/navigation/navigation-item/index.tsx
@@ -10,7 +10,6 @@ import type { ReactNode } from 'react';
import {
FlexBlock,
__experimentalItem as Item,
- // @ts-ignore
__experimentalHStack as HStack,
} from '@wordpress/components';
diff --git a/packages/boot/src/components/navigation/use-sidebar-parent.ts b/packages/boot/src/components/navigation/use-sidebar-parent.ts
index e8bbf4ce1cb361..1f0c6099917f33 100644
--- a/packages/boot/src/components/navigation/use-sidebar-parent.ts
+++ b/packages/boot/src/components/navigation/use-sidebar-parent.ts
@@ -37,7 +37,7 @@ export function useSidebarParent() {
const router = useRouter();
const menuItems = useSelect(
( select ) =>
- // @ts-ignore
+ // @ts-expect-error Store types are not available when selecting by store name.
select( STORE_NAME ).getMenuItems(),
[]
);
diff --git a/packages/components/src/border-box-control/test/utils.ts b/packages/components/src/border-box-control/test/utils.ts
index 03fd7be1420f48..37be048f375234 100644
--- a/packages/components/src/border-box-control/test/utils.ts
+++ b/packages/components/src/border-box-control/test/utils.ts
@@ -47,15 +47,13 @@ describe( 'BorderBoxControl Utils', () => {
describe( 'isEmptyBorder', () => {
it( 'should determine a undefined, null, and {} to be empty', () => {
expect( isEmptyBorder( undefined ) ).toBe( true );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `null` is outside the declared `Border | undefined` input; resilience is tested.
expect( isEmptyBorder( null ) ).toBe( true );
expect( isEmptyBorder( {} ) ).toBe( true );
} );
it( 'should determine object missing all border props to be empty', () => {
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` has no properties in common with `Border`; resilience is tested.
expect( isEmptyBorder( nonBorder ) ).toBe( true );
} );
@@ -114,15 +112,13 @@ describe( 'BorderBoxControl Utils', () => {
describe( 'isCompleteBorder', () => {
it( 'should determine a undefined, null, and {} to be incomplete', () => {
expect( isCompleteBorder( undefined ) ).toBe( false );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `null` is outside the declared `Border | undefined` input; resilience is tested.
expect( isCompleteBorder( null ) ).toBe( false );
expect( isCompleteBorder( {} ) ).toBe( false );
} );
it( 'should determine objects missing border props to be incomplete', () => {
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` has no properties in common with `Border`; resilience is tested.
expect( isCompleteBorder( nonBorder ) ).toBe( false );
expect( isCompleteBorder( partialBorder ) ).toBe( false );
expect( isCompleteBorder( partialWithExtraProp ) ).toBe( false );
@@ -157,8 +153,7 @@ describe( 'BorderBoxControl Utils', () => {
it( 'should determine undefined, non-border or empty object as not being mixed', () => {
expect( hasMixedBorders( undefined ) ).toBe( false );
expect( hasMixedBorders( {} ) ).toBe( false );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` is not assignable to `AnyBorder`; resilience is tested.
expect( hasMixedBorders( nonBorder ) ).toBe( false );
} );
@@ -178,15 +173,13 @@ describe( 'BorderBoxControl Utils', () => {
describe( 'getSplitBorders', () => {
it( 'should return undefined when no border provided', () => {
expect( getSplitBorders( undefined ) ).toEqual( undefined );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `null` is outside the declared `Border | undefined` input; resilience is tested.
expect( getSplitBorders( null ) ).toEqual( undefined );
} );
it( 'should return undefined when supplied border is empty', () => {
expect( getSplitBorders( {} ) ).toEqual( undefined );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` has no properties in common with `Border`; resilience is tested.
expect( getSplitBorders( nonBorder ) ).toEqual( undefined );
} );
@@ -207,8 +200,7 @@ describe( 'BorderBoxControl Utils', () => {
} );
it( 'should only return differences for border related properties', () => {
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` has no properties in common with `Border`; resilience is tested.
const diff = getBorderDiff( nonBorder, { caffeine: 'coffee' } );
expect( diff ).toEqual( {} );
} );
@@ -217,8 +209,7 @@ describe( 'BorderBoxControl Utils', () => {
const diff = getBorderDiff( completeBorder, {
...completeBorder,
color: '#21759b',
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `caffeine` is not a declared `Border` property; the test checks it is ignored.
caffeine: 'cola',
} );
expect( diff ).toEqual( { color: '#21759b' } );
@@ -316,8 +307,7 @@ describe( 'BorderBoxControl Utils', () => {
it( 'should return undefined when no border provided', () => {
expect( getShorthandBorderStyle( undefined ) ).toEqual( undefined );
expect( getShorthandBorderStyle( {} ) ).toEqual( undefined );
- // Checking for extra resilience, even if not a valid type.
- // @ts-expect-error
+ // @ts-expect-error `nonBorder` has no properties in common with `Border`; resilience is tested.
expect( getShorthandBorderStyle( nonBorder ) ).toEqual( undefined );
} );
diff --git a/packages/components/src/button/test/index.tsx b/packages/components/src/button/test/index.tsx
index 6167d4a6daa3a1..7a3e7a1a102b4a 100644
--- a/packages/components/src/button/test/index.tsx
+++ b/packages/components/src/button/test/index.tsx
@@ -2,6 +2,7 @@
* External dependencies
*/
import { render, screen } from '@testing-library/react';
+import { press } from '@ariakit/test';
/**
* WordPress dependencies
@@ -15,7 +16,6 @@ import { plusCircle } from '@wordpress/icons';
import _Button from '..';
import Tooltip from '../../tooltip';
import cleanupTooltip from '../../tooltip/test/utils';
-import { press } from '@ariakit/test';
jest.mock( '../../icon', () => () =>
);
@@ -636,9 +636,9 @@ describe( 'Button', () => {
{ /* @ts-expect-error - if button, type must be submit/reset/button */ }
- { /* @ts-expect-error */ }
+ { /* @ts-expect-error `type` must be submit, reset or button. */ }
- { /* @ts-expect-error */ }
+ { /* @ts-expect-error `accessibleWhenDisabled` is not supported on a link button. */ }
>;
} );
diff --git a/packages/components/src/color-picker/input-with-slider.tsx b/packages/components/src/color-picker/input-with-slider.tsx
index f9e93669bb0362..9100a8a1c44b60 100644
--- a/packages/components/src/color-picker/input-with-slider.tsx
+++ b/packages/components/src/color-picker/input-with-slider.tsx
@@ -52,7 +52,7 @@ export const InputWithSlider = ( {
min={ min }
max={ max }
value={ value }
- // @ts-expect-error
+ // @ts-expect-error `RangeControl` may call `onChange` with `undefined`, but this expects a `number`.
// See: https://github.com/WordPress/gutenberg/pull/40535#issuecomment-1172418185
onChange={ onChange }
withInputField={ false }
diff --git a/packages/components/src/context/context-connect.ts b/packages/components/src/context/context-connect.ts
index ed7c708df1e4b7..c01486a4c3c757 100644
--- a/packages/components/src/context/context-connect.ts
+++ b/packages/components/src/context/context-connect.ts
@@ -122,15 +122,15 @@ export function getConnectNamespace(
let namespaces = [];
- // @ts-ignore internal property
+ // @ts-expect-error `Component` is a union that has no index signature.
if ( Component[ CONNECT_STATIC_NAMESPACE ] ) {
- // @ts-ignore internal property
+ // @ts-expect-error `Component` is a union that has no index signature.
namespaces = Component[ CONNECT_STATIC_NAMESPACE ];
}
- // @ts-ignore
+ // @ts-expect-error `type` does not exist on every member of the `Component` union.
if ( Component.type && Component.type[ CONNECT_STATIC_NAMESPACE ] ) {
- // @ts-ignore
+ // @ts-expect-error `type` does not exist on every member of the `Component` union.
namespaces = Component.type[ CONNECT_STATIC_NAMESPACE ];
}
diff --git a/packages/components/src/context/use-context-system.js b/packages/components/src/context/use-context-system.js
index 75bed76c769cb7..dd54d249ad7433 100644
--- a/packages/components/src/context/use-context-system.js
+++ b/packages/components/src/context/use-context-system.js
@@ -34,7 +34,7 @@ export function useContextSystem( props, namespace ) {
const contextProps = contextSystemProps?.[ namespace ] || {};
/** @type {ConnectedProps
} */
- // @ts-ignore We fill in the missing properties below
+ // @ts-expect-error The initial object cannot satisfy the generic `P`, whose props are copied in below.
const finalComponentProps = {
...getConnectedNamespace(),
...getNamespace( namespace ),
@@ -60,19 +60,19 @@ export function useContextSystem( props, namespace ) {
: initialMergedProps.children;
for ( const key in initialMergedProps ) {
- // @ts-ignore filling in missing props
+ // @ts-expect-error A string key cannot index the merged props type.
finalComponentProps[ key ] = initialMergedProps[ key ];
}
for ( const key in overrideProps ) {
- // @ts-ignore filling in missing props
+ // @ts-expect-error A string key cannot index the merged props type.
finalComponentProps[ key ] = overrideProps[ key ];
}
// Setting an `undefined` explicitly can cause unintended overwrites
// when a `cloneElement()` is involved.
if ( rendered !== undefined ) {
- // @ts-ignore
+ // @ts-expect-error `children` does not exist on `ConnectedProps
`.
finalComponentProps.children = rendered;
}
diff --git a/packages/components/src/custom-gradient-picker/index.tsx b/packages/components/src/custom-gradient-picker/index.tsx
index 2dddb3a618ca88..1a95b06a4e56a4 100644
--- a/packages/components/src/custom-gradient-picker/index.tsx
+++ b/packages/components/src/custom-gradient-picker/index.tsx
@@ -166,7 +166,7 @@ export function CustomGradientPicker( {
color: getStopCssColor( colorStop ),
// Although it's already been checked by `hasUnsupportedLength` in `getGradientAstWithDefault`,
// TypeScript doesn't know that `colorStop.length` is not undefined here.
- // @ts-expect-error
+ // @ts-expect-error `colorStop.length` is possibly `undefined`.
position: parseInt( colorStop.length.value ),
};
} );
diff --git a/packages/components/src/disabled/index.tsx b/packages/components/src/disabled/index.tsx
index 89167040b17dd6..46efb000f33025 100644
--- a/packages/components/src/disabled/index.tsx
+++ b/packages/components/src/disabled/index.tsx
@@ -57,7 +57,7 @@ function Disabled( {
return (
unknown` callback.
const throttledDragOver = throttle( over, 16 );
ownerDocument.addEventListener( 'dragover', throttledDragOver );
diff --git a/packages/components/src/icon/index.tsx b/packages/components/src/icon/index.tsx
index 99189209d1f359..73ee33d8258853 100644
--- a/packages/components/src/icon/index.tsx
+++ b/packages/components/src/icon/index.tsx
@@ -105,7 +105,7 @@ function Icon( {
if ( isValidElement( icon ) ) {
return cloneElement( icon, {
- // @ts-ignore Just forwarding the size prop along
+ // @ts-expect-error `size` is forwarded but is not in the icon component overloads.
size,
width: size,
height: size,
diff --git a/packages/components/src/input-control/utils.ts b/packages/components/src/input-control/utils.ts
index 5bc42312af1f5d..71e477d978ea5f 100644
--- a/packages/components/src/input-control/utils.ts
+++ b/packages/components/src/input-control/utils.ts
@@ -60,7 +60,7 @@ export function useDragCursor(
if ( isDragging ) {
document.documentElement.style.cursor = dragCursor;
} else {
- // @ts-expect-error
+ // @ts-expect-error `cursor` is typed as `string`, but `null` clears it.
document.documentElement.style.cursor = null;
}
}, [ isDragging, dragCursor ] );
diff --git a/packages/components/src/placeholder/test/index.tsx b/packages/components/src/placeholder/test/index.tsx
index 6d9427af00b4c5..69033a98b6e019 100644
--- a/packages/components/src/placeholder/test/index.tsx
+++ b/packages/components/src/placeholder/test/index.tsx
@@ -47,7 +47,7 @@ const mockedSpeak = jest.mocked( speak );
describe( 'Placeholder', () => {
beforeEach( () => {
- // @ts-ignore
+ // @ts-expect-error The imported hook is not typed as a Jest mock.
useResizeObserver.mockReturnValue( [
,
{ width: 320 },
@@ -164,7 +164,7 @@ describe( 'Placeholder', () => {
describe( 'resize aware', () => {
it( 'should not assign modifier class in first-pass `null` width from `useResizeObserver`', () => {
- // @ts-ignore
+ // @ts-expect-error The imported hook is not typed as a Jest mock.
useResizeObserver.mockReturnValue( [
,
{ width: 480 },
@@ -179,7 +179,7 @@ describe( 'Placeholder', () => {
} );
it( 'should assign modifier class', () => {
- // @ts-ignore
+ // @ts-expect-error The imported hook is not typed as a Jest mock.
useResizeObserver.mockReturnValue( [
,
{ width: null },
diff --git a/packages/components/src/query-controls/index.tsx b/packages/components/src/query-controls/index.tsx
index c75b2a8a12d586..5bddaed68b4e1b 100644
--- a/packages/components/src/query-controls/index.tsx
+++ b/packages/components/src/query-controls/index.tsx
@@ -159,7 +159,7 @@ export function QueryControls( {
// Keeping the fallback to `item.value` for legacy reasons,
// even if items of `selectedCategories` should not have a
// `value` property.
- // @ts-expect-error
+ // @ts-expect-error `value` does not exist on `Category`.
value: item.name || item.value,
} ) )
}
diff --git a/packages/components/src/utils/rtl.js b/packages/components/src/utils/rtl.js
index caced3555801fa..9a7047e55e94c1 100644
--- a/packages/components/src/utils/rtl.js
+++ b/packages/components/src/utils/rtl.js
@@ -75,11 +75,11 @@ export const convertLTRToRTL = ( ltrStyles = {} ) => {
export function rtl( ltrStyles = {}, rtlStyles ) {
return () => {
if ( rtlStyles ) {
- // @ts-ignore: `css` types are wrong, it can accept an object: https://emotion.sh/docs/object-styles#with-css
+ // @ts-expect-error `React.CSSProperties` lacks the string index signature Emotion's `CSSObject` requires.
return isRTL() ? css( rtlStyles ) : css( ltrStyles );
}
- // @ts-ignore: `css` types are wrong, it can accept an object: https://emotion.sh/docs/object-styles#with-css
+ // @ts-expect-error `React.CSSProperties` lacks the string index signature Emotion's `CSSObject` requires.
return isRTL() ? css( convertLTRToRTL( ltrStyles ) ) : css( ltrStyles );
};
}
diff --git a/packages/compose/src/higher-order/with-global-events/index.js b/packages/compose/src/higher-order/with-global-events/index.js
index de8683d141c578..8568573e5b9aea 100644
--- a/packages/compose/src/higher-order/with-global-events/index.js
+++ b/packages/compose/src/higher-order/with-global-events/index.js
@@ -40,7 +40,6 @@ export default function withGlobalEvents( eventTypesToHandlers ) {
alternative: 'useEffect',
} );
- // @ts-ignore We don't need to fix the type-related issues because this is deprecated.
return createHigherOrderComponent( ( WrappedComponent ) => {
class Wrapper extends Component {
constructor( /** @type {any} */ props ) {
diff --git a/packages/compose/src/higher-order/with-instance-id/index.tsx b/packages/compose/src/higher-order/with-instance-id/index.tsx
index 3b4131930bf1bf..a83a94faf17a77 100644
--- a/packages/compose/src/higher-order/with-instance-id/index.tsx
+++ b/packages/compose/src/higher-order/with-instance-id/index.tsx
@@ -19,7 +19,7 @@ const withInstanceId = createHigherOrderComponent(
) => {
return ( props: WithoutInjectedProps< C, InstanceIdProps > ) => {
const instanceId = useInstanceId( WrappedComponent );
- // @ts-ignore
+ // @ts-expect-error `LibraryManagedAttributes` cannot see the injected `instanceId` prop.
return ;
};
},
diff --git a/packages/compose/src/higher-order/with-safe-timeout/index.tsx b/packages/compose/src/higher-order/with-safe-timeout/index.tsx
index 73e8faec6c1011..73fee65a18245d 100644
--- a/packages/compose/src/higher-order/with-safe-timeout/index.tsx
+++ b/packages/compose/src/higher-order/with-safe-timeout/index.tsx
@@ -66,7 +66,7 @@ const withSafeTimeout = createHigherOrderComponent(
render() {
return (
- // @ts-ignore
+ // @ts-expect-error `LibraryManagedAttributes` cannot see the injected timeout props.
{
undoIgnore: true,
};
- // @ts-ignore Types are not provided when using store name instead of store instance.
+ // @ts-expect-error Types are not provided when using the store name instead of the store instance.
dispatch( coreStore ).editEntityRecord(
this.kind,
this.name,
diff --git a/packages/core-data/src/batch/default-processor.js b/packages/core-data/src/batch/default-processor.js
index a60e62446c8a14..001d254fc392f5 100644
--- a/packages/core-data/src/batch/default-processor.js
+++ b/packages/core-data/src/batch/default-processor.js
@@ -41,7 +41,6 @@ export default async function defaultProcessor( requests ) {
const results = [];
- // @ts-ignore We would have crashed or never gotten to this point if we hadn't received the maxItems count.
for ( const batchRequests of chunk( requests, maxItems ) ) {
const batchResponse = await apiFetch( {
path: '/batch/v1',
diff --git a/packages/core-data/src/hooks/use-entity-records.ts b/packages/core-data/src/hooks/use-entity-records.ts
index 0e9eec3beaf5e5..e9f7b1b938f24b 100644
--- a/packages/core-data/src/hooks/use-entity-records.ts
+++ b/packages/core-data/src/hooks/use-entity-records.ts
@@ -208,7 +208,7 @@ export function useEntityRecordsWithPermissions< RecordType >(
const ids = useMemo(
() =>
data?.map(
- // @ts-ignore
+ // @ts-expect-error `data` is `unknown[]`, so the callback signature does not line up.
( record: RecordType ) => record[ entityConfig?.key ?? 'id' ]
) ?? [],
[ data, entityConfig?.key ]
@@ -227,7 +227,7 @@ export function useEntityRecordsWithPermissions< RecordType >(
const dataWithPermissions = useMemo(
() =>
data?.map( ( record, index ) => ( {
- // @ts-ignore
+ // @ts-expect-error `record` is `unknown`, which cannot be spread.
...record,
permissions: permissions[ index ],
} ) ) ?? [],
diff --git a/packages/core-data/src/utils/crdt-user-selections.ts b/packages/core-data/src/utils/crdt-user-selections.ts
index a0c55a78021533..c5b39325fb65d8 100644
--- a/packages/core-data/src/utils/crdt-user-selections.ts
+++ b/packages/core-data/src/utils/crdt-user-selections.ts
@@ -3,7 +3,7 @@
*/
import { select } from '@wordpress/data';
import { Y } from '@wordpress/sync';
-// @ts-ignore No exported types for block editor store selectors.
+// @ts-expect-error `@wordpress/block-editor` does not expose type declarations for its entry point.
import { store as blockEditorStore } from '@wordpress/block-editor';
/**
diff --git a/packages/dataviews/src/components/dataform-layouts/test/normalize-form.ts b/packages/dataviews/src/components/dataform-layouts/test/normalize-form.ts
index 832030cb9212c5..c9f3e72ad22df6 100644
--- a/packages/dataviews/src/components/dataform-layouts/test/normalize-form.ts
+++ b/packages/dataviews/src/components/dataform-layouts/test/normalize-form.ts
@@ -309,11 +309,10 @@ describe( 'normalizeFormFields', () => {
it( 'card: enforces isOpened=true and summary=[] when withHeader=false', () => {
const form: Form = {
- // @ts-ignore - Test intentionally uses invalid type to verify runtime behavior.
layout: {
type: 'card',
withHeader: false,
- // @ts-ignore - Test intentionally uses invalid type to verify runtime behavior.
+ // @ts-expect-error With `withHeader: false`, `isOpened` must be `true`; normalization of `false` is tested.
isOpened: false,
summary: [ { id: 'field1', visibility: 'always' } ],
},
diff --git a/packages/dataviews/src/components/dataviews-filters/filter.tsx b/packages/dataviews/src/components/dataviews-filters/filter.tsx
index 424e5cc26d477d..56ef0f3d729fae 100644
--- a/packages/dataviews/src/components/dataviews-filters/filter.tsx
+++ b/packages/dataviews/src/components/dataviews-filters/filter.tsx
@@ -229,7 +229,7 @@ export default function Filter( {
activeElements = [
{
value: filterInView.value,
- // @ts-ignore
+ // @ts-expect-error `label` is a `string[]` here, but the element type expects a `string`.
label,
},
];
diff --git a/packages/dataviews/src/components/dataviews-footer/index.tsx b/packages/dataviews/src/components/dataviews-footer/index.tsx
index ac154707f26290..065ec4a08d6f5b 100644
--- a/packages/dataviews/src/components/dataviews-footer/index.tsx
+++ b/packages/dataviews/src/components/dataviews-footer/index.tsx
@@ -55,7 +55,7 @@ export default function DataViewsFooter() {
return (
(
direction="column"
gap="sm"
className={ wrapperClassName }
- // @ts-ignore
+ // @ts-expect-error `inert` is not declared in React 18's HTML attribute types.
inert={ isInert ? 'true' : undefined }
>
{ groupedEntries.map(
@@ -92,7 +92,7 @@ export default function ViewActivity< Item >(
{ ...props } />
diff --git a/packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx b/packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx
index ac69dc08695130..0039b53d8f36f5 100644
--- a/packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx
+++ b/packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx
@@ -438,7 +438,7 @@ export default function CompositeGrid< Item >( {
}
role="feed"
focusWrap
- // @ts-ignore
+ // @ts-expect-error `inert` is not declared in React 18's HTML attribute types.
inert={ inert }
>
{ /* Render placeholders for unloaded items in first row */ }
@@ -534,7 +534,7 @@ export default function CompositeGrid< Item >( {
aria-busy={ isLoading }
aria-rowcount={ totalRows }
ref={ resizeObserverRef }
- // @ts-ignore
+ // @ts-expect-error `inert` is not declared in React 18's HTML attribute types.
inert={ inert }
>
{ chunk( data, gridColumns ).map( ( row, i ) => (
diff --git a/packages/dataviews/src/components/dataviews-layouts/table/index.tsx b/packages/dataviews/src/components/dataviews-layouts/table/index.tsx
index b9ecb2d1eee8e8..4e8e5bc18eae83 100644
--- a/packages/dataviews/src/components/dataviews-layouts/table/index.tsx
+++ b/packages/dataviews/src/components/dataviews-layouts/table/index.tsx
@@ -418,7 +418,7 @@ function ViewTable< Item >( {
aria-busy={ isLoading }
aria-describedby={ tableNoticeId }
role={ isInfiniteScroll ? 'feed' : undefined }
- // @ts-ignore Reason: inert is a recent HTML attribute
+ // @ts-expect-error `inert` is not declared in React 18's HTML attribute types.
inert={ ! isInfiniteScroll && isLoading ? 'true' : undefined }
>
diff --git a/packages/dataviews/src/components/dataviews-view-config/properties-section.tsx b/packages/dataviews/src/components/dataviews-view-config/properties-section.tsx
index 56fcbaab6b54b4..c74ec9f4e630eb 100644
--- a/packages/dataviews/src/components/dataviews-view-config/properties-section.tsx
+++ b/packages/dataviews/src/components/dataviews-view-config/properties-section.tsx
@@ -89,7 +89,7 @@ export function PropertiesSection( {
const visibleLockedFields = lockedFields.filter(
( { isVisibleFlag } ) =>
- // @ts-expect-error
+ // @ts-expect-error A string key cannot index `View`.
view[ isVisibleFlag ] ?? true
);
@@ -112,7 +112,7 @@ export function PropertiesSection( {
>
{ lockedFields.map( ( { field, isVisibleFlag } ) => {
- // @ts-expect-error
+ // @ts-expect-error A string key cannot index `View`.
const isVisible = view[ isVisibleFlag ] ?? true;
const fieldToRender =
isSingleVisibleLockedField && isVisible
diff --git a/packages/dataviews/src/dataform/stories/layout-regular.tsx b/packages/dataviews/src/dataform/stories/layout-regular.tsx
index 281a07d3cce399..270de41db4e2f7 100644
--- a/packages/dataviews/src/dataform/stories/layout-regular.tsx
+++ b/packages/dataviews/src/dataform/stories/layout-regular.tsx
@@ -326,7 +326,7 @@ const getLayoutFromStoryArgs = ( {
type: 'card',
};
if ( withHeader !== undefined ) {
- // @ts-ignore We want to demo the effects of configuring withHeader.
+ // @ts-expect-error `cardLayout` is narrowed to the member whose `withHeader` can only be `true`.
cardLayout.withHeader = withHeader;
}
layout = cardLayout;
diff --git a/packages/dataviews/src/dataviews/test/dataviews.tsx b/packages/dataviews/src/dataviews/test/dataviews.tsx
index 9357909b19f288..3122ee20e14193 100644
--- a/packages/dataviews/src/dataviews/test/dataviews.tsx
+++ b/packages/dataviews/src/dataviews/test/dataviews.tsx
@@ -351,7 +351,7 @@ describe( 'DataViews component', () => {
isItemClickable={ () => true }
renderItemLink={ ( { item, ...props } ) => (