Nếu hàm được đề cập là một phương thức của một lớp do người dùng xác định, bạn có thể sử dụng trình trang trí phương thức trong phép liên hợp với Siêu dữ liệu phản chiếu để xác định kiểu trả về (hàm tạo) trong thời gian chạy (và với nó, làm như bạn thấy phù hợp).
Ví dụ: bạn có thể đăng nhập nó vào bảng điều khiển:
function logReturnType(
target: Object | Function,
key: string,
descriptor: PropertyDescriptor
): PropertyDescriptor | void {
var returnType = Reflect.getMetadata("design:returntype", target, key);
console.log(returnType);
}
Chỉ cần chụp bộ trang trí phương thức này vào một phương thức bạn chọn và bạn có tham chiếu chính xác đến hàm khởi tạo của đối tượng được cho là trả về từ lệnh gọi phương thức.
class TestClass {
@logReturnType
public test(): number {
return 42;
}
}
Tuy nhiên, có một số hạn chế đáng chú ý đối với phương pháp này:
- bạn cần phải xác định rõ ràng kiểu trả về trên một phương thức được trang trí như vậy, nếu không, bạn sẽ không được xác định từ
Reflect.getMetadata
,
- bạn chỉ có thể tham chiếu các kiểu thực tế cũng tồn tại sau khi biên dịch; nghĩa là, không có giao diện hoặc số liệu chung
Ngoài ra, bạn sẽ cần chỉ định các đối số dòng lệnh sau cho trình biên dịch typecript, vì cả trình trang trí và siêu dữ liệu phản ánh đều là các tính năng thử nghiệm khi viết bài đăng này:
--emitDecoratorMetadata --experimentalDecorators