2017-10-18 22 views
11

Tôi có trang web có 10 trang, chia sẻ tệp Loại bản ghi và mỗi trang có tệp Loại bản ghi cụ thể của riêng nó. Một trang có một plugin JQuery, timepicker, vì vậy tôi mở rộng đối tượng JQuery sử dụng:Làm cách nào để mở rộng cho một tệp?

interface JQuery { 
    timepicker(options:any):JQuery; 
} 

Tuy nhiên tôi không muốn bất kỳ tập tin nguyên cảo khác để có timepicker trên đối tượng JQuery. Làm thế nào tôi có thể mở rộng nó chỉ cho tập tin này?

Nó không cho phép tôi mở rộng JQuery bên trong một không gian tên.

Mô-đun có thể trợ giúp không? Tôi không cần phải nhập hoặc xuất bất cứ thứ gì, vì vậy tôi không chắc nó là thích hợp hay cách sử dụng các mô-đun.

+0

Nếu mọi trang đều có tệp Loại bản ghi riêng, tại sao bạn không chỉ thêm dòng giao diện đó vào trang cụ thể cần trang đó? Nhân tiện, nói đúng là bạn không mở rộng đối tượng jQuery bằng cách viết một giao diện mà còn được gọi là jQuery :) – Kokodoko

+0

@Kokodoko Đó là những gì tôi làm, tuy nhiên tất cả các tệp Typescript trong dự án đều thấy giao diện này và hiển thị 'timepicker' trên 'JQuery'. – wezten

+1

Nó có lẽ chỉ là IDE của bạn mà thấy giao diện 'timepicker' và áp dụng nó cho toàn bộ dự án của bạn. Có lẽ bạn có thể sử dụng không gian tên để phân biệt giữa các trang và chỉ có một số giao diện trong một số không gian tên. 'namespace page10 {interface bla {}}' – Kokodoko

Trả lời

0

Bạn có nghĩa là có thể bao gồm những điều sau đây trong đánh dấu trang của bạn:

<script src="//code.jquery.com/jquery-3.2.1.min.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script> 
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css"> 

Và sau đó chỉ cần làm bất cứ điều gì với bảng chọn thời gian bằng cách sử dụng các mẹo sau đây để có được một tay cầm trên jQuery:

declare var jQuery: any; 

export class Whatever { 
    private timePicker = jquery.timePicker 
} 

Đó là siêu hacky, nhưng tôi nghĩ rằng nó sẽ làm việc.

+0

Sau đó, tôi không có intellisense cho tất cả các đối tượng 'JQuery'. – wezten

+0

@wezten Điều này sẽ giữ cho các phiên bản của bạn được sạch sẽ theo thời gian thực tế. Về IDE của bạn, đó có xu hướng là một điều tất cả hoặc không có gì. Các tài liệu jQuery là siêu rõ ràng và dễ sử dụng. –

Các vấn đề liên quan