検索

Vue 2.5 での TypeScript の改善

Oct 25, 2017 pm 02:54 PM
typescript改善する

型の改善

Vue 2.0 のリリース以来、TypeScript の統合を改善するというリクエストを受けてきました。それ以来、ほとんどのコア ライブラリ (vuevue-routervuex) に公式の TypeScript 型宣言を追加しました。ただし、すぐに使える Vue API を使用する場合、現在の統合は不足しています。例: TypeScript は、Vue で使用されるデフォルトのオブジェクトベース API の this 型を簡単に推論できません。 Vue コードを TypeScript でより適切に動作させるには、vue-class-component デコレーターを使用する必要があります。これにより、クラスベースの構文を使用して Vue コンポーネントを作成できるようになります。 vuevue-routervuex)加入了官方的TypeScript类型声明。然而,当使用开箱即用的Vue API时,目前的集成还是有所欠缺。例如:TypeScript不能轻易的推断出Vue使用的基于对象的默认API中的this类型。想要使我们的Vue代码与TypeScript更好的运作,我们需要使用vue-class-component装饰器,它允许我们使用基于类的语法来写Vue组件。

对于喜欢基于类的API的用户,这可能就够好了,但是有点糟的是,只是为了类型判断,用户就不得不使用不同的API。这也使得将现有的Vue代码库向TypeScript迁移更具挑战。

今年的早些时候,TypeScript引入了一些新特性,能使TypeScript更好的理解基于对象字面量的API,这也使得改进Vue的类型声明更具可能。来自TypeScript团队的Daniel Rosenwasser发起了一个雄心勃勃的PR(现在由核心团队成员HerringtonDarkholme持有),一旦通过合并,将会提供:

  • 使用默认的Vue API时对this的正确的类型推断。这也能在单文件组件中很好的运行!

  • 基于组件的props配置的thisprops的类型推断。

  • 更重要的是,这些改进也会使纯粹的JavaScript用户受益!,如果你正在配合很棒的Vetur扩展使用VSCode,在Vue组件中使用纯粹的JavaScript时,你会感受到关于自动补全提示甚至是类型提示的显著改进! 这是因为vue-language-server,这个分析Vue组件的内部包,可以利用TypeScript编译器来提取关于你代码的更多信息。此外,任何支持语言服务协议的的编辑器都可以利用vue-language-server来提供类似的功能。

Vue 2.5 での TypeScript の改善
Vue 2.5 での TypeScript の改善

运行中的 VSCode + Vetur + 新类型声明

感兴趣的话,就克隆这个体验项目(确保是new-types分支)并使用VSCode + Vetur打开它来尝试一下吧。

TypeScript用户可能需要的操作

类型改进将在vue 2.5中实装,目前计划在十月初前后发布。我们正在发布一个小版本,因为JavaScript公共API还没有取得突破性改变,但是,升级可能需要现有的Vue+TypeScript用户进行一些操作。这也是我们现在公布改动的原因,便于你有足够的时间来规划升级。

  • 新的类型需要至少2.4版的TypeScript。建议你随着Vue2.5升级至最新的TypeScript版本。

  • 之前,我们建议在tsconfig.json中配置"allowSyntheticDefaultImports": true来使用ES风格的导入语法(import Vue from 'vue')。新的类型将正式转换至ES风格的导入/导出语法,这样上述配置就不需要了,而且用户在所有情况下都要使用ES风格的导入。

  • 为了配合语法的变化,下述有Vue核心类型依赖的库将会有主版本更新,需要跟随Vue2.5进行升级:vuex, vue-router, vuex-router-sync, vue-class-component

  • 现在,当增加自定义模块时,用户需要使用interface VueConstructor来代替namespace Vue(差异对比)

  • 如果你使用as ComponentOptions<something></something>来注释你的组件配置,像computed, watch, render和生命周期钩子这种类型的需要手动进行类型注释。

我们尽力去减小升级成本,并使这些类型改进与vue-class-component中使用的基于类的API兼容。对于绝大多数用户,只需要升级依赖关系,并切换至ES风格的导入就好。同时我们建议你在准备好升级前,将你的Vue版本锁定在2.4.x

クラスベースの API を好むユーザーにとってはこれで十分かもしれませんが、型判断のためだけにユーザーが異なる API を使用しなければならないのは少し悪いです。これにより、既存の Vue コードベースを TypeScript に移行することがより困難になります。

今年の初めに、TypeScript がオブジェクト リテラル ベースの API をよりよく理解できるようにするいくつかの新機能が導入されました。これにより、Vue の型宣言を改善することも可能になります。 TypeScript チームの Daniel Rosenwasser は、野心的な PR (現在はコア チーム メンバーの Herrington Darkholme が担当) を立ち上げました。これは、統合されると次の機能を提供します:

  • 使用法 デフォルトの Vue API this の正しい型推論です。これは単一ファイルコンポーネントでもうまく機能します。

  • コンポーネントの props で構成された thisprops に基づく型推論。

  • さらに、これらの改善は純粋な JavaScript ユーザーにも利益をもたらします。 素晴らしい Vetur 拡張機能を備えた VSCode を使用している場合は、Vue コンポーネントで純粋な JavaScript を使用するときに、オートコンプリート ヒントや入力ヒントの大幅な改善を体験することができます。 これは、Vue コンポーネントを分析する内部パッケージである vue- language-server が TypeScript コンパイラーを利用して、コードに関する詳細情報を抽出できるためです。さらに、言語サービス プロトコルをサポートするエディターは、vue- language-server を使用して同様の機能を提供できます。 🎜
🎜Vue 2.5 での TypeScript の改善
Vue 2.5 での TypeScript の改善🎜🎜VSCode + Vetur + 新しいタイプのステートメントを実行します🎜 🎜興味がある場合は、このエクスペリエンス プロジェクトを複製し (new-types ブランチであることを確認してください)、VSCode + Vetur を使用して開いて試してみてください。 🎜🎜TypeScript ユーザーに必要な操作🎜🎜 型の改善は、現在 10 月初旬頃にリリースされる予定の vue 2.5 で実装される予定です。 JavaScript パブリック API にはまだ重大な変更が加えられていないため、マイナー バージョンをリリースしますが、既存の Vue+TypeScript ユーザーに対してアップグレードには何らかのアクションが必要になる場合があります。そのため、アップグレードを計画するのに十分な時間を確保できるよう、今変更を発表しています。 🎜
  • 🎜新しい型には、少なくとも TypeScript バージョン 2.4 が必要です。 Vue2.5 を含む最新の TypeScript バージョンにアップグレードすることをお勧めします。 🎜
  • 🎜以前は、ES スタイルのインポート構文 (import Vue) を使用するには、<code>tsconfig.json"allowSyntheticDefaultImports": true を構成することを推奨していました。 「vue」 から)。新しいタイプは正式に ES スタイルのインポート/エクスポート構文に変換されるため、上記の構成は必要なく、ユーザーはあらゆる場合に ES スタイルのインポートを使用する必要があります。 🎜
  • 🎜構文の変更に対応するために、Vue コア タイプに依存する次のライブラリにはメジャー バージョンのアップデートがあり、Vue2.5 にアップグレードする必要があります: vuexvue-routervuex-router-syncvue-class-component。 🎜
  • 🎜カスタム モジュールを追加するとき、ユーザーは namespace Vue の代わりに interface VueConstructor を使用する必要があります (違いの比較)🎜
  • 🎜 as ComponentOptions<something></something> を使用してコンポーネント構成に注釈を付ける場合 (computedwatchrender など) > およびライフサイクルフックには手動のタイプアノテーションが必要です。 🎜
🎜 私たちは、アップグレード コストを削減し、これらの型の改善を vue-class-component で使用されるクラスベースの API と互換性を持たせるために最善を尽くしています。大多数のユーザーの場合、依存関係をアップグレードし、ES スタイルのインポートに切り替えるだけで済みます。同時に、アップグレードの準備ができるまで、Vue のバージョンを 2.4.x にロックすることをお勧めします。 🎜🎜ブループリント: vue-cli での TypeScript タイプのサポート🎜🎜バージョン 2.5 の後、TS+Vue ユーザーが新しいプロジェクトを簡単に開始できるように、次の vue-cli バージョンで公式の TypeScript サポートを導入する予定です。乞うご期待! 🎜🎜非 TypeScript ユーザー向け🎜🎜これらの変更は非 TypeScript ユーザーに悪影響を及ぼしません。パブリック JavaScript API に関する限り、2.5 は完全に下位互換性があり、TypeScript CLI の統合も完全にオプションにすることができます。ただし、先ほど述べたように、vue- language-server エディター拡張機能を使用すると、より適切な自動補完プロンプトが表示されます。 🎜


以上がVue 2.5 での TypeScript の改善の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール