Here is my isolated code:
type IDontCare = any;
let aFunction: (params: unknown) => IDontCare;
aFunction = (hello: string) => 0;
And I got the error message Type 'unknown' is not assignable to type 'string'
. I wonder, isn't it I'm trying to assign 'string' to 'unknown' instead? I can't wrap my head around this error message, and would love to hear some explanation. Thanks.
Code | Error message |
---|---|
CodePudding user response:
When you say (params: A) => number
is assignable to (params: B) => number
,
you expect (params: A) => number
behaves the same as (params: B) => number
,
i.e. (params: A) => number
can take a params of type B
and return a number
.
That means you are trying to check if a B
can be passed into (params: A) => number
. The result is you are trying to assign B
to A
. If B
is not assignable to A
, then (params: A) => number
is not assignable to (params: B) => number
.
In other words, you need B
to be assignable to A
in order for (params: A) => number
to be assignable to (params: B) => number
CodePudding user response:
Type of aFunction
says, that it can receive argument of any type. So, you should assign to aFunction
function that can do the same or even more.
(hello: string) => 0
cannot take any argument (actually, it takes only string
), so it is not assignable to aFunction