今回は、d.ts ファイルの使用について詳しく説明します。d.ts ファイルを使用する際の 注意事項 は何ですか?実際の事例を見てみましょう。
はじめに
この記事では主に、typescript 記述ファイル (xxx.d.ts などの d.ts で終わるファイル名) の書き方について説明します。
私は最近jsからtsに切り替え始めました。ただし、jquery などの一部の記述ファイル (d.ts) は、他の人が作成した npm install @types/jquery を介してダウンロードできます。ただし、社内のニッチなパブリック ライブラリや内部パブリック ライブラリ、または以前に記述されたパブリック JS コードには、記述ファイルを手動で記述する必要があるものがまだいくつかあります。
私も以前インターネットで情報を探しましたが、まだ不明瞭でしたので、他の人の参考になればと思い、調査結果を記録しました。
js のみを記述する場合は、ほとんどの
エディタ が d.ts ファイルを認識し、js コードを記述するときにスマートなプロンプトを表示できます。効果は次のようになります:

詳細については、私が以前に書いたいくつかの記事を読むことができます: http://www.jb51.net/article/138211.htm
通常、js を記述するときは、 js を導入する 2 つの方法 方法:
1、HTML ファイルの <script> タグを通じてグローバル変数を導入します。 <p style="text-align: left;">2. モジュールローダーを通じて他の js ファイルを要求します: 例: var j=require('jquery')。 <p style="text-align: left;"><p style="text-align: left;"><span style="color: #ff0000">グローバル型<strong> まず、最初の方法を例に挙げます。 <p style="text-align: left;"><p style="text-align: left;">変数<strong>たとえば、現在グローバル変数がある場合、対応する d.ts ファイルは次のように記述されます。 <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare var aaa:numberキーワードdeclareとは宣言という意味です。グローバル変数は aaa 、型は数値型(number)です。もちろん、文字列型などにすることもできます: <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare var aaa:number|string //注意这里用的是一个竖线表示"或"的意思定数の場合は、キーワード const を使用してそれを表します: <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare const max:200<p style="text-align: left;">Function<strong> 上記のグローバル変数の書き方から、次のようになります。 <p style="text-align: left;">グローバル関数<a href="http://www.php.cn/code/6786.html" target="_blank">を自然に推論することができます 書き方は以下の通りです: <pre class="brush:php;toolbar:false">/** id是用户的id,可以是number或者string */
decalre function getName(id:number|string):string最後の文字列は<p style="text-align: left;">関数の戻り値<a href="http://www.php.cn/code/6029.html" target="_blank">の型を表します。関数が値を返さない場合は、void として表現できます。 js で呼び出すと、プロンプトが表示されます: <p style="text-align: left;"><p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/a6dd4943eb16778383fb7e917af3eb57-1.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/>上で書いたコメントは、js を記述するときにプロンプトを表示することもできます。 <p style="max-width:90%">場合によっては、同じ関数を複数の方法で記述することができます: <p style="text-align: left;"><p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/a6dd4943eb16778383fb7e917af3eb57-2.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><pre class="brush:php;toolbar:false">get(1234)
get("zhangsan",18)その後、対応する d.ts の記述方法: <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare function get(id: string | number): string
declare function get(name:string,age:number): string 一部のパラメータがオプションである場合は、それらが必須ではないことを示すために ? を追加できます。 。 <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare function render(callback?:()=>void): stringjs を呼び出すときは、コールバックを渡すかどうかを指定できます。 <p style="text-align: left;"><pre class="brush:php;toolbar:false">render()
render(function () {
alert('finish.')
})<p style="text-align: left;">class<strong> もちろん、変数や関数に加えて、クラスもあります。 <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare class Person {
static maxAge: number //静态变量
static getMaxAge(): number //静态方法
constructor(name: string, age: number) //构造函数
getName(id: number): string
}コンストラクターは、<p style="text-align: left;">コンストラクター メソッド<a href="http://www.php.cn/code/11820.html" target="_blank">を表します: <p style="text-align: left;"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/a6dd4943eb16778383fb7e917af3eb57-3.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/edb08869e235f64b73a4b39fe237fdfd-4.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> ここで、static は静的を意味し、静的変数と静的メソッドを表すために使用されます: <p style="max-width:90%"><p style="text-align: left;"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/edb08869e235f64b73a4b39fe237fdfd-5.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/edb08869e235f64b73a4b39fe237fdfd-6.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/>object <p style="max-width:90%">そうですもちろん、このオブジェクトは可能性があります変数、関数、またはクラスがあります。 <p style="text-align: left;"><pre class="brush:php;toolbar:false">declare namespace OOO{
var aaa: number | string
function getName(id: number | string): string
class Person {
static maxAge: number //静态变量
static getMaxAge(): number //静态方法
constructor(name: string, age: number) //构造函数
getName(id: number): string //实例方法
}
}<p style="text-align: left;">其实就是把上面的那些写法放到这个namespace包起来的大括号里面,注意括号里面就不需要declare关键字了。<br/>效果:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d460061f37b5161eb974e50742f2aabc-7.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d460061f37b5161eb974e50742f2aabc-8.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d460061f37b5161eb974e50742f2aabc-9.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%">对象里面套对象也是可以的:<pre class="brush:php;toolbar:false">declare namespace OOO{
var aaa: number | string
// ...
namespace O2{
let b:number
}
}<p style="text-align: left;">效果:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d8a88aefcaeacd78256bb495e57f583d-10.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%"><strong>混合类型<p style="text-align: left;">有时候有些值既是函数又是class又是对象的复杂对象。比如我们常用的jquery有各种用法:<pre class="brush:php;toolbar:false">new $()
$.ajax()
$()<p style="text-align: left;">既是函数又是对象<pre class="brush:php;toolbar:false">declare function $2(s:string): void
declare namespace $2{
let aaa:number
}<p style="text-align: left;">效果:<p style="text-align: left;">作为函数用:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d8a88aefcaeacd78256bb495e57f583d-11.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">作为对象用:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d8a88aefcaeacd78256bb495e57f583d-12.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">也就是ts会自动把同名的namespace和function合并到一起。<p style="text-align: left;">既是函数,又是类(可以new出来)<pre class="brush:php;toolbar:false">// 实例方法
interface People{
name: string
age: number
getName(): string
getAge():number
}
interface People_Static{
new (name: string, age: number): People
/** 静态方法 */
staticA():number
(w:number):number
}
declare var People:People_Static<p style="text-align: left;">效果:<p style="text-align: left;">作为函数使用:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d8a88aefcaeacd78256bb495e57f583d-13.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">类的静态方法:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d4edb08b6a79f2c0430c1a94bac1446e-14.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">类的构造函数:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d4edb08b6a79f2c0430c1a94bac1446e-15.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">类的实例方法:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/d4edb08b6a79f2c0430c1a94bac1446e-16.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%"><span style="color: #ff0000"><strong>模块化<p style="text-align: left;">除了上面的全局的方式,我们有时候还是通过require的方式引入模块化的代码。<p style="text-align: left;">比如这样的效果:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/4ce87eb708ea42e6e23895fa5b7de6d0-17.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%">对应的写法是这样的:<pre class="brush:php;toolbar:false">declare module "abcde" {
export let a: number
export function b(): number
export namespace c{
let cd: string
}
}<p style="text-align: left;">其实就是外面套了一层 module "xxx",里面的写法和之前其实差不多,把declare换成了export。<p style="text-align: left;">此外,有时候我们导出去的是一个函数本身,比如这样的:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/4ce87eb708ea42e6e23895fa5b7de6d0-18.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%">对应的写法很简单,长这个样子:<pre class="brush:php;toolbar:false">declare module "app" {
function aaa(some:number):number
export=aaa
}<p style="text-align: left;">以此类推,导出一个变量或常量的话这么写:<pre class="brush:php;toolbar:false">declare module "ccc" {
const c:400
export=c
}<p style="text-align: left;">效果:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/4ce87eb708ea42e6e23895fa5b7de6d0-19.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%"><span style="color: #ff0000"><strong>UMD<p style="text-align: left;">有一种代码,既可以通过全局变量访问到,也可以通过require的方式访问到。比如我们最常见的jquery:<p style="text-align: left;"> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/72d848997ab9ace307136ee8686b813c-20.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/72d848997ab9ace307136ee8686b813c-21.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">其实就是按照全局的方式写d.ts,写完后在最后加上declare namespace "xxx"的描述:<pre class="brush:php;toolbar:false">declare namespace UUU{
let a:number
}
declare module "UUU" {
export =UUU
}<p style="text-align: left;">效果这样:<p style="text-align: left;">作为全局变量使用:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/72d848997ab9ace307136ee8686b813c-22.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%">作为模块加载使用:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/10a2dfd2f298242781b52deb2e34cad6-23.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/><p style="max-width:90%"><span style="color: #ff0000"><strong>其他<p style="text-align: left;">有时候我们扩展了一些内置对象。比如我们给Date增加了一个format的实例方法:<p style="text-align: left;"><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/061/021/10a2dfd2f298242781b52deb2e34cad6-24.png?x-oss-process=image/resize,p_40" class="lazy" alt=""/> <p style="max-width:90%">对应的d.ts描述文件这样写:<pre class="brush:php;toolbar:false">interface Date {
format(f: string): string
}<p>相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!<p>推荐阅读:<p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-394697.html" target="_blank">怎么阻止vuex页面刷新后数据清除<br/><p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-394694.html" target="_blank">vuex里mapState,mapGetters使用详解<br/><p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-394688.html" target="_blank">操作render执行有哪些方法<br/></script>
以上がd.ts ファイルの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。