2013-04-25 27 views
33

Tôi đang cố gắng thực hiện điều này, nhưng nó không hoạt động như tôi mong đợi.Cách truy cập các phương pháp tĩnh trong TypeScript

(Tôi đang sử dụng tùy chọn AMD)

//logger.ts 
export class Logger { 

    static log(message: string) { 
     //do stuff 
    } 
} 

//main.ts 
import logger = module('services/logger'); 
logger.log("test"); //The property 'log' does not exist on value of type '"logger"' 
logger.Logger.log(); //works 

Làm thế nào để bạn logger.log()?

+0

sẽ hoạt động tốt, tôi có mã tương tự đang hoạt động (có thể phiên bản TS đã giải quyết) –

Trả lời

94

Bạn có thể nhập trực tiếp các lớp học, cho phép bạn để có cách sử dụng mà bạn muốn.

// usage 
import { Logger } from 'path/logger.ts' 
Logger.Log(); 

Và định nghĩa vẫn giữ nguyên.

// path/logger.ts 
export class Logger { 

    static Log() { 
     ... 
    } 
} 
+1

đây phải là câu trả lời được chấp nhận :) –

13

Câu trả lời này là chính xác tại thời điểm đăng bài. Nó hiện không còn được dùng nữa. Xem câu trả lời của Dimitris dưới đây để có giải pháp hiện tại tốt hơn.

Sử dụng lớp học, bạn không thể. Bạn luôn luôn phải gọi {module}.{class}.{function}

Nhưng bạn có thể thả các lớp hoàn toàn và chỉ cần gọi {module}.{function}:

// services/logger.ts 
export function log(message:string){ 
// do stuff 
} 

//main.ts 
import logger = module('services/logger'); 
logger.log("test"); // Should work 
+0

Thay đổi cách mô-đun nội bộ đóng góp cho hệ thống kiểu không có liên quan ở đây. –

+0

Tôi không rõ ràng nếu nó chỉ là các mô-đun bên trong đang thay đổi. Cảm ơn - Tôi sẽ cập nhật. – JcFx

+0

Tôi sử dụng tất cả thời gian cho các mô-đun có trong thực tế đơn. – thomaux

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