# @posthog/types Type definitions for the PostHog JavaScript SDK. ## When to Use This Package ### ✅ You Need This Package If: You're loading PostHog via a **` ``` ### ❌ You Don't Need This Package If: You're installing any PostHog library via npm/yarn/pnpm. The types are **already included**: - `posthog-js` - Browser SDK (includes all types) - `posthog-node` - Node.js SDK - `posthog-react-native` - React Native SDK - `@posthog/react` - React hooks and components ```typescript // Types are already available when you install posthog-js import posthog from 'posthog-js' posthog.init('your-api-key') posthog.capture('my_event') // ✅ Fully typed ``` ## Installation ```bash npm install @posthog/types # or yarn add @posthog/types # or pnpm add @posthog/types ``` ## Usage ### Typing `window.posthog` (Script Tag Usage) Create a type declaration file to type `window.posthog`: ```typescript // posthog.d.ts import type { PostHog } from '@posthog/types' declare global { interface Window { posthog?: PostHog } } export {} ``` Now you can use `window.posthog` with full type safety: ```typescript // Your code window.posthog?.capture('button_clicked', { button_id: 'signup' }) window.posthog?.identify('user-123', { email: 'user@example.com' }) const flagValue = window.posthog?.getFeatureFlag('my-flag') if (flagValue === 'variant-a') { // ... } ``` ### Typing Configuration Objects ```typescript import type { PostHogConfig, Properties } from '@posthog/types' // Type your configuration const config: Partial = { api_host: 'https://us.i.posthog.com', autocapture: true, capture_pageview: 'history_change', } // Type event properties const eventProps: Properties = { button_id: 'signup', page: '/pricing', } ``` ## Version Synchronization This package's version is synchronized with `posthog-js`. They are always released together with matching version numbers. ## License MIT