本文へジャンプ

ユーティリティー型

INFO

このページでは、一般的に使われるものの中から、使用法の説明が必要ないくつかのユーティリティー型のみがリストされています。export された型の完全なリストについては、ソースコードを参照してください。

PropType<T>

ランタイム props 宣言を使用する際、より具体的な型で props に注釈を付けるために使われます。

  • ts
    import type { PropType } from 'vue'
    
    interface Book {
      title: string
      author: string
      year: number
    }
    
    export default {
      props: {
        book: {
          // より具体的な型を `Object` に提供します
          type: Object as PropType<Book>,
          required: true
        }
      }
    }
  • 参照 ガイド - コンポーネント props の型付け

MaybeRef<T>

T | Ref<T> のエイリアスです。 コンポーザブルの引数を注釈するときに役立ちます。

  • 3.3 以上でのみサポートされています。

MaybeRefOrGetter<T>

T | Ref<T> | (() => T) のエイリアスです。 コンポーザブルの引数を注釈するときに役立ちます。

  • 3.3 以上でのみサポートされています。

ExtractPropTypes<T>

ランタイム props オプションオブジェクトから props の型を抽出します。抽出された型は内向き、つまりコンポーネントから受け取った解決済みの props です。これは、仮に必須でなくても、真偽値の型の props とデフォルト値を持った props が常に定義されていることを意味しています。

外向きの props、つまり親が渡すことのできる props を抽出するためには ExtractPublicPropTypes を使用します。

  • ts
    const propsOptions = {
      foo: String,
      bar: Boolean,
      baz: {
        type: Number,
        required: true
      },
      qux: {
        type: Number,
        default: 1
      }
    } as const
    
    type Props = ExtractPropTypes<typeof propsOptions>
    // {
    //   foo?: string,
    //   bar: boolean,
    //   baz: number,
    //   qux: number
    // }

ExtractPublicPropTypes<T>

ランタイム props オプションオブジェクトから props の型を抽出します。抽出された型は外向き、つまり親が渡すことのできる props です。

  • 3.3 以上でのみサポートされています。

  • ts
    const propsOptions = {
      foo: String,
      bar: Boolean,
      baz: {
        type: Number,
        required: true
      },
      qux: {
        type: Number,
        default: 1
      }
    } as const
    
    type Props = ExtractPublicPropTypes<typeof propsOptions>
    // {
    //   foo?: string,
    //   bar?: boolean,
    //   baz: number,
    //   qux?: number
    // }

ComponentCustomProperties

コンポーネントインスタンス型を拡張してカスタムグローバルプロパティのサポートするのに使われます。

ComponentCustomOptions

コンポーネントオプション型を拡張してカスタムオプションをサポートするのに使われます。

ComponentCustomProps

TSX 要素で宣言されていない props を使用するため、許可された TSX の props を拡張するために使用します。

  • ts
    declare module 'vue' {
      interface ComponentCustomProps {
        hello?: string
      }
    }
    
    export {}
    tsx
    // hello が宣言されていない props でも使えるようになります
    <MyComponent hello="world" />

    TIP

    拡張するには、モジュールを .ts または .d.ts ファイルとして配置する必要があります。詳細はグローバルプロパティの拡張を参照してください。

CSSProperties

スタイルプロパティに適用できる値を拡張します。

  • どんなカスタム CSS プロパティでも適用できます

    ts
    declare module 'vue' {
      interface CSSProperties {
        [key: `--${string}`]: string
      }
    }
    tsx
    <div style={ { '--bg-color': 'blue' } }>
    html
    <div :style="{ '--bg-color': 'blue' }"></div>

TIP

拡張するには、モジュールを .ts または .d.ts ファイルとして配置する必要があります。詳細はグローバルプロパティの拡張を参照してください。

参照

SFC <style> タグは、v-bind CSS 関数を使って、CSS の値を動的コンポーネントの状態にリンクすることをサポートしています。これにより、型を拡張することなく、カスタムプロパティを使用することができます。

ユーティリティー型が読み込まれました