Có một vài vấn đề ở đây:
- Bạn không instantiating bất cứ điều gì, và
doSomething
là một phương pháp dụ
- Khi bạn làm
import * as util
, util
đại diện cho mô-đun, không phải là một đối tượng trong đó.
Nếu bạn muốn Util
, bạn chỉ nên nhập khẩu rằng:
import { Util } from './util'
Tiếp theo, bạn nên nhanh chóng Util
, trước khi cuối cùng đã gọi phương thức trên nó:
var u = new Util();
u.doSomething("test");
Dưới đây là mã của bạn vá lên:
import { Util } from './util'
export class MyClass{
constructor()
{
var u = new Util();
u.doSomething("test");
}
}
Tất cả những gì đã nói, dường như có điều gì đó kỳ lạ về cách bạn đang sử dụng utils của bạn. Đây là ý kiến hoàn toàn cá nhân, nhưng tôi sẽ không gọi các phương thức "làm điều gì đó", tức là gây ra các tác dụng phụ, trong một nhà xây dựng.
Ngoài ra, các phương thức trong Util
không thực sự giống như chúng cần ở trong lớp đó, vì lớp không giữ trạng thái mà chúng phụ thuộc vào. Bạn luôn có thể xuất các chức năng thông thường từ một mô-đun. Nếu bạn đã viết mô-đun utils của bạn như thế này:
export function doSomething(val: string) { return val; }
export function doSomethingElse(val: string) { return val; }
bạn sẽ xuất các chức năng của mình trực tiếp và sẽ tránh phiền phức instantiation, và trên thực tế mã ban đầu của bạn sẽ hoạt động chính xác.
Nguồn
2015-09-25 20:51:10
Đây là cách tôi thích làm ngay bây giờ. –
Các phương pháp có phải là tĩnh không? Không thể một thể hiện của lớp Utils được tạo ra được sử dụng? – user728630
@GregGum Bao bọc các chức năng không trạng thái của bạn trong một lớp chỉ vì nó là một ý tưởng tồi, bởi vì nó phá vỡ các kỹ thuật tối ưu hóa mô-đun như lắc cây. Bạn nên xuất mọi thứ càng gần với cấp cao nhất của mô-đun càng tốt. –