【发布时间】:2019-01-05 21:35:57
【问题描述】:
这里,我测试 TypeScript3.0 unkown 类型。
TypeScript 3.0 引入了一种名为
unknown的新类型,它正是这样做的。很像any,任何值都可以分配给unknown;但是,与any不同,您不能访问类型为unknown的值的任何属性,也不能调用/构造它们。此外,unknown类型的值只能分配给unknown或any。
我玩了一些Church eoncoding 的东西,并对函数的每个参数测试unknown 类型,我有一个错误如下:
const log = (m: unknown) => {
console.log(m); //IO
return m;
};
const I = (x:unknown) => x;
const L = (x:unknown) => (y:unknown) => x;
const P = (x:unknown) => (y:unknown) => (z:Function) => z(x)(y);
//z is a binary operator Function!
const Left = L;
const Right = L(I);
log("Left Right test---------");
log(
Left("boy")("girl") // boy
);
log(
Right("boy")("girl") //TypeScript Type Error here
);
错误:
church.ts:20:9 - error TS2571: Object is of type 'unknown'.
20 Right("boy")("girl")
~~~~~~~~~~~~
以防万一,这在 vanilla JS 中经过了很好的测试,但我只是想知道如何在不使用 any 类型的情况下解决此错误。
谢谢。
【问题讨论】:
-
您期待不同的东西吗?
L(I)("boy")的结果类型为unknown,并且您在引用中明确包含此类类型的状态“您也无法调用/构造它们”。 -
你能澄清哪些引用说明了这些类型“你也不能调用/构造它们”。
-
...字面意思是您在问题中发布的黄色框中的那个。
-
@jonrsharpe ,谢谢,问题不是我所期望的,但我只是想知道如何在不使用任何类型的情况下解决此错误。
标签: javascript typescript types functional-programming church-encoding