mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
6b2a511cbb
Summary: ## Changelog [General] [Added] - Add `types` folder to house TypeScript types. Release TypesScript types with react-native and eventually deprecate [types/react-native](https://www.npmjs.com/package/types/react-native). The current plan is to release types/react-native for 0.70 and 0.71 while also maintaining types here. This will result in some double maintenance until 0.72 but will give community time to move off of types/react-native. After this lands, there have been changes on `main` of types that we need to update. Then, when we release 0.71 from DefinitelyTyped, we can simply copy over the `types` folder from this repo. Pull Request resolved: https://github.com/facebook/react-native/pull/34614 Test Plan: `yarn run test-typescript` for linting types * Created a new project using the TS template and my local clone of `react-native` on this branch. `npx react-native init MyTSApp --version <path-to-my-local-rn-repo> --template react-native-template-typescript` * Updated the `package.json` to remove `types/react-native` * Deleted my node_modules and re-ran yarn * Opened MyTSApp in VSCode and verified the type suggestions appeared and cmd+click to defnitions took me to the node_module dependency `react-native/types` ## Danger is failing on this PR and it's expected as it runs off the changes on `main`. [This is expected](https://docs.github.com/en/github-ae@latest/actions/using-workflows/events-that-trigger-workflows?fbclid=IwAR2_AE0Jwndt8Gu-iTQnxGxLJq7nakbi7sz8jwZ6U62JWLSdcZuvjcQ6WvE#pull_request_target). However testing it locally passes. Once merged, and these changes are on `main`, danger will pass again. ``` $ react-native/packages/react-native-bots ❯ yarn danger pr https://github.com/facebook/react-native/pull/34614 yarn run v1.22.19 $ ..react-native/node_modules/.bin/danger pr https://github.com/facebook/react-native/pull/34614 Starting Danger PR on facebook/react-native#34614 Danger: ✓ found only warnings, not failing the build ## Warnings 🔒 package.json - <i>Changes were made to package.json. This will require a manual import by a Facebook employee.</i> ✨ Done in 13.24s. ``` Reviewed By: mdvacca Differential Revision: D39479137 Pulled By: lunaleaps fbshipit-source-id: 1d506f812d566b783b6e79104cd6339b077a42a7
75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
declare module 'react-native/Libraries/Utilities/codegenNativeCommands' {
|
|
export interface Options<T extends string> {
|
|
readonly supportedCommands: ReadonlyArray<T>;
|
|
}
|
|
|
|
function codegenNativeCommands<T extends object>(
|
|
options: Options<keyof T extends string ? keyof T : never>,
|
|
): T;
|
|
|
|
export default codegenNativeCommands;
|
|
}
|
|
|
|
declare module 'react-native/Libraries/Utilities/codegenNativeComponent' {
|
|
import type {HostComponent} from 'react-native';
|
|
|
|
export interface Options {
|
|
readonly interfaceOnly?: boolean;
|
|
readonly paperComponentName?: string;
|
|
readonly paperComponentNameDeprecated?: string;
|
|
readonly excludedPlatforms?: ReadonlyArray<'iOS' | 'android'>;
|
|
}
|
|
|
|
export type NativeComponentType<T> = HostComponent<T>;
|
|
|
|
function codegenNativeComponent<Props extends object>(
|
|
componentName: string,
|
|
options?: Options,
|
|
): NativeComponentType<Props>;
|
|
|
|
export default codegenNativeComponent;
|
|
}
|
|
|
|
declare module 'react-native/Libraries/Types/CodegenTypes' {
|
|
import type {NativeSyntheticEvent} from 'react-native';
|
|
|
|
// Event types
|
|
// We're not using the PaperName, it is only used to codegen view config settings
|
|
|
|
export type BubblingEventHandler<
|
|
T,
|
|
PaperName extends string | never = never,
|
|
> = (event: NativeSyntheticEvent<T>) => void | Promise<void>;
|
|
export type DirectEventHandler<
|
|
T,
|
|
PaperName extends string | never = never,
|
|
> = (event: NativeSyntheticEvent<T>) => void | Promise<void>;
|
|
|
|
// Prop types
|
|
export type Double = number;
|
|
export type Float = number;
|
|
export type Int32 = number;
|
|
export type UnsafeObject = object;
|
|
|
|
type DefaultTypes = number | boolean | string | ReadonlyArray<string>;
|
|
// Default handling, ignore the unused value
|
|
// we're only using it for type checking
|
|
//
|
|
// TODO: (rickhanlonii) T44881457 If a default is provided, it should always be optional
|
|
// but that is currently not supported in the codegen since we require a default
|
|
|
|
export type WithDefault<
|
|
Type extends DefaultTypes,
|
|
Value extends Type | string | undefined | null,
|
|
> = Type | undefined | null;
|
|
}
|